【发布时间】:2019-09-04 07:48:51
【问题描述】:
以下配置正确地服务于 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 卷挂载到 nginx 容器中的子目录 (/var/www/html/wordpress-1)(这样我就可以从同一个 NGINX 代理服务多个应用程序)。下面的配置在响应正文中返回 404 和 File not found.。下面wordpress-1.conf 中的两个SCRIPT_FILENAME 行中的任何一个都会出现此结果。
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;
}
}
当我检查 debug 中的 NGINX error_log 时,我看到了这个:
在 stderr 中发送的 FastCGI:读取时“主脚本未知” 来自上游的响应标头,客户端:555.69.70.132,服务器: wordpress-1.com,请求:“GET / HTTP/1.1”,上游: “fastcgi://172.18.0.3:9000”,主机:“wordpress-1.com”
这让我相信SCRIPT_FILENAME 存在问题,但/var/www/html$fastcgi_script_name 和/var/www/html/wordpress-1$fastcgi_script_name 似乎都不起作用。
问题:
如何调整我的第二对配置文件,以便在将 WordPress 卷安装到 nginx 容器中的 /var/www/html 以外的目录时可以为 WordPress 提供服务?
注意:以上示例是我试图解决的问题的精简示例。我正在做的实际项目已经结束了here。
【问题讨论】:
标签: wordpress docker nginx docker-compose