使用nginx重定向' / blog'到另一个实例上托管的wordpress网站

时间:2016-09-24 07:48:23

标签: wordpress nginx

我有一个网站,想要在' / blog'下托管一个wordpress博客(托管在不同的实例上)。 我正在使用具有以下配置的nginx代理

location ^~ /blog
    proxy_set_header   X-Real-IP            $remote_addr;
    proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
    proxy_set_header   Host                 $http_host;
    proxy_set_header   X-NginX-Proxy        true;
    proxy_set_header   X-Forwarded-Proto    $scheme;
    proxy_http_version 1.1;
    proxy_pass         11.111.11.111
    proxy_redirect     off;
  }

我还修改了wordpress设置 - >一般

WordPress地址(网址) - http://mywebsite.com/blog

网站地址(网址) - http://mywebsite.com/blog

' / blog'由于无法加载css和js,因此功能不全。

任何人都知道如何做到这一点。我在这个问题上看过很多帖子,但都没有解决我的问题。 感谢。

1 个答案:

答案 0 :(得分:2)

您可能缺少从公共URI /blog到上游URI /的映射。

您可以使用locationproxy_pass指令通过在proxy_pass语句中附加URI来执行此功能。有关详细信息,请参阅this document。例如:

location ^~ /blog/ {
    proxy_pass http://192.0.2.0/;
}

根据您的整体配置,以上内容可能会阻止URL //example.com/blog(即没有尾随/)被正确转发,在这种情况下(1)添加一个特定的位置块来处理单个案例,或(2)将rewrite ... break添加到上面的位置块。

选项(1)示例(添加到上面):

location = /blog { rewrite ^ /blog/ last; }

选项(2)示例:

location ^~ /blog {
    rewrite ^/blog(?:/(.*))?$ /$1 break;
    proxy_pass http://192.0.2.0;
}

在第二个选项中,别名函数被移动到rewrite语句,而proxy_pass没有附加URI。有关详细信息,请参阅this document