wordpress - 使用docker-compose将WordPress命名卷挂载到NGINX容器的子目录中

标签 wordpress docker nginx docker-compose

以下配置可正确提供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代理服务多个应用程序)。以下配置在响应正文中返回带有404File 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/

相关文章:

wordpress - 在元素或表单中单击按钮时隐藏/取消隐藏部分

docker -/dev/xvdf中的稀疏 block 设备是什么

docker - 我尝试构建一个使用 alpine linux 图像并打印 "Hello StackOverflow!"的简单图像。这里有什么问题呢?

linux - 从 Docker 容器内部运行 dnsmasq 作为 DHCP 服务器

nginx - 如何阻止 nginx 中的空用户代理?

redirect - Nginx反向代理导致无限循环

javascript - 未捕获的 TypeError 未定义不是函数匿名函数

javascript - 在 WordPress 中禁用移动设备上的排队 Javascript

redirect - https 下带有 301 重定向的 Nginx 反向代理

wordpress - 优化APC缓存