对Wordpress站点的Apache反向代理通过子路径时不应该

时间:2016-09-12 20:49:05

标签: wordpress apache proxy reverse-proxy

我一直在尝试在主网站上设置反向代理到网址格式的博客网站

example.com/blog - > blog.example.com

example.com/blog位于Apache实例上,httpd.conf我添加了以下内容。

SSLProxyEngine on

ProxyPreserveHost Off
ProxyRequests Off

ProxyPassMatch /blog https://blog.example.com
ProxyPassReverse /blog https://blog.example.com

这一切都有效,但它保持404。好消息是它实际上是正确的反向代理,因为它抓住了博客的404页面。

在查看apache访问日志后,我发现它因任何原因/blog传递子路径到blog.example.com所以它的提取blog.example.com/blog。当用户导航到/blog时,它会自然地执行404。但是,我的理解是,在设置ProxyPassReverse时,它是否会在指定的内容中生成请求,因此在上述情况下,它应该请求blog.example.com而不是在最后传递/blog

以下是文档中的代码段,它确认了上述内容的工作方式:

  

例如,假设本地服务器具有地址http://example.com/;然后

ProxyPass /mirror/foo/ http://backend.example.com/
ProxyPassReverse /mirror/foo/ http://backend.example.com/
ProxyPassReverseCookieDomain backend.example.com public.example.com
ProxyPassReverseCookiePath / /mirror/foo/
  

不仅会导致http://example.com/mirror/foo/bar的本地请求在内部转换为http://backend.example.com/bar的代理请求(ProxyPass在此处提供的功能)。

为什么会出现这种情况?最糟糕的情况我可能会尝试添加重定向或重写,因此/blog会转到主页,但我确实设置了永久链接,以便/blog位于文章中。

仅供参考我使用的是Apache 2.2。

1 个答案:

答案 0 :(得分:0)

我是个白痴。我使用的是ProxyPassMatch而不是ProxyPass。啊。