nginx 在我的域名地址下的 /blog 上安装 wordpress

nginx 在我的域名地址下的 /blog 上安装 wordpress

我有一个域名,它使用 nginx 网络服务器为我的网站提供服务,该网络服务器使用位置下的选项example.com指向 nodejs docker 容器 3000 端口。proxy pass/

server {
    listen 80 default_server;
    server_name example.com www.example.com;
    index index.php index.html;
    access_log /var/log/nginx/access_example.com.log;
    error_log /var/log/nginx/error_example.com.log;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

现在我想添加一个 wordpress 网站,/blog所以我在服务器块下添加了这些配置。

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location /blog {
        root /var/www;
        try_files $uri $uri/ =404;
    }

为什么我无法访问新安装的 wordpress,/var/www/blog/ 如果我在我的终端上运行,它是正常的,我可以看到文件curl http://example.com/blog/license.txt的内容,但没有加载我为测试添加的文件。license.txt/var/www/blog/index.phpindex.html

我认为问题出在线try_files $uri $uri/ =404;路上,但我没有找到任何有用的信息。任何帮助都将不胜感激

答案1

您可能已经知道,Wordpress 使用前端控制器架构 - 即运行任何 PHP 脚本的入口点是 $WORDPRESS_ROOT/index.php。您需要告诉 nginx 相应地路由请求:

try_files $uri $uri/ /blog/index.php?$args;

请注意,大多数静态内容的请求将由前两个值之一处理。没有 404 处理程序,因为 Wordpress 需要自己处理这种情况。

但index.php没有加载

嗯,对于发生的事情没有一个非常有意义的描述 - 即您是否明确提到了 ..../index.php 或只是 .../ ?您得到了什么回应?您的日志中有什么?

PHP(以及大多数 fcgi 处理程序)需要相当多的配置,这些配置通常包含在配置的其他地方。在 Ubuntu 上,如果从 repo 安装,我原本以为这些配置已经到位,但建议对其进行测试。我还建议在进行上述前端控制器修改之前解决这个问题,因为这会使事情变得有些复杂。使用一个简单的“hello world”PHP 脚本。

相关内容