Wordpress网站的Apache反向代理在不应该传递子路径时传递子路径



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

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.

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

相关内容

最新更新