我一直在尝试在主网站上设置反向代理到网址格式的博客网站
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。
答案 0 :(得分:0)
ProxyPassMatch
而不是ProxyPass
。啊。