在没有 proxy_pass 的情况下,如何让 nginx 在 /blog 上提供 Wordpress 服务?

在没有 proxy_pass 的情况下,如何让 nginx 在 /blog 上提供 Wordpress 服务?

我已经发过WP.SE 上的这个问题,但没有得到回复。与此同时,我想到了解决方案涉及proxy_pass,但它也有一些缺点。

我有一个 Wordpress 子域名安装,我想改为在 上提供服务/blog。这肯定是常见问题解答,但我还没有确定它的搜索词(/blog太常见了也没用)。

在哪里可以找到完整的 nginx 配置文件和 wp-config 设置,其中 WordPress 已在 /blog 上运行?我需要更改其 MySQL 数据库中的任何 WP 设置吗?移动现有实例是否可行,还是应该从头开始?

答案1

如果您已经更改了站点 URL,如您在另一个问题中所述,您可以尝试在现有服务器块内使用别名位置。

它看起来应该是这样的

location ^~ /blog {
root /var/www/example.com;
index index.php index.html index.htm;
try_files $uri $uri/ /blog/index.php?$args;

location ~ \.php {
    fastcgi_split_path_info ^(.*\.php)(.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    fastcgi_pass 127.0.0.1:9000;
 }
}

这是假设您的 WordPress 安装在 中/var/www/blog,如果没有,请相应更改。

您需要检查 php5-fpm(假设您正在使用它)是否实际在监听127.0.0.1:9000 大多数情况下 Debian/Ubuntu 上的默认套接字是unix:/var/run/php5-fpm.sock 如果您想确定套接字是什么或更改它,请查看/etc/php5/fpm/pool.d/www.conf

你也可以看看这个回答
请注意,在这个答案中,index.php 之后缺少配置?$args,这对于 WooCommerce 之类的插件来说很重要 - 如果没有它,它们就无法正常工作。

如果您想确保一切正确,您可以导出数据库的转储,然后使用查找器用某些文本编辑器将旧 URL 替换为新 URL。

相关内容