以下配置可正确提供WordPress实例。 (为简洁起见,省略了一些无关的配置详细信息。)
docker-compose.yml
version: "3.7"
services:
nginx:
image: nginx:alpine
links:
- wordpress-1
volumes:
- wordpress-1_files:/var/www/html
wordpress-1:
image: wordpress:php7.3-fpm-alpine
volumes:
- wordpress-1_files:/var/www/html
volumes:
wordpress-1_files:
wordpress-1.conf
server {
server_name wordpress-1.com;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_pass wordpress-1:9000;
}
}
但是,我想将
wordpress-1_files
卷挂载到/var/www/html/wordpress-1
容器中的子目录(nginx
)(以便可以从同一NGINX代理服务多个应用程序)。以下配置在响应正文中返回带有404
的File not found.
。下面的SCRIPT_FILENAME
中的两个wordpress-1.conf
行中的任何一行都会发生此结果。docker-compose.yml
version: "3.7"
services:
nginx:
image: nginx:alpine
links:
- wordpress-1
volumes:
- wordpress-1_files:/var/www/html/wordpress-1
wordpress-1:
image: wordpress:php7.3-fpm-alpine
volumes:
- wordpress-1_files:/var/www/html
volumes:
wordpress-1_files:
wordpress-1.conf
server {
server_name wordpress-1.com;
root /var/www/html/wordpress-1;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/html/wordpress-1$fastcgi_script_name;
fastcgi_pass wordpress-1:9000;
}
}
当我检查
error_log
中的NGINX debug
时,我看到以下内容:FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 555.69.70.132, server: wordpress-1.com, request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.3:9000", host: "wordpress-1.com"
这使我相信
SCRIPT_FILENAME
存在问题,但是/var/www/html$fastcgi_script_name
和/var/www/html/wordpress-1$fastcgi_script_name
似乎都不起作用。问题:
我如何调整第二对配置文件,以便在将WordPress卷安装到
/var/www/html
容器中的nginx
以外的目录时可以使用WordPress?注意:上面的示例是我要解决的问题的最小示例。我正在处理的实际项目在here上。
最佳答案
gh,事实证明我的测试还不够彻底(尽管反复进行了几天)。解决方案实际上是使用:fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
这是因为在wordpress:php7.3-fpm-alpine
图像的内部,这就是WordPress文件所在的路径。
在测试期间,我忘记了禁用位于暂存站点前面的CloudFlare的缓存。因此,我的测试并不总是能测试我认为的内容...
关于wordpress - 使用docker-compose将WordPress命名卷挂载到NGINX容器的子目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55670377/