我将要为一个静态网站(使用nginx)添加一个wordpress博客(托管在另一个实例中),并将其放置于“/blog”文件夹下。当使用nginx代理时:
location /blog/ {
proxy_set_header X-Is-Reverse-Proxy "true";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://55.555.55.555;
}
以下是 wp-config.php:
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/');
define('WP_HOME', 'http://SOMESITE.com/blog/');
所有来自
wp-content
(和wp-includes
)的文件都无法正确访问,因为它们被搜索在http://SOMESITE.com/wp-content/*
而不是http://SOMESITE.com/blog/wp-content/*
下面。添加一些额外的代理规则没有起作用,例如:
location ~* (\/wp-content) {
proxy_set_header X-Is-Reverse-Proxy "true";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://55.555.55.555;
}
不要重新定义wp-config.php:
define('WP_SITEURL', 'http://SOMESITE.com/blog/');
希望能得到任何想法。 我也相信这是一个常见的用例,但在这里找不到任何有效的技巧。
谢谢。
proxy_pass
后面需要加上斜杠(/
)。proxy_pass http://127.0.0.1:8080/;
可以正常工作, 而proxy_pass http://127.0.0.1:8080;
则不能。 - Nathaniel Rogers