所有 ProxyPass 指令都需要 ProxyPassReverse 指令吗?
ProxyPass / http://foo.example.com:8080/
ProxyPassReverse / http://www.example.com/
我看到了这段代码,并了解到所有进入的流量foo.example.com
都代理到 foo.example.com:8080。第二行有什么作用?
答案1
此指令允许 Apache 调整 HTTP 重定向响应中的 Location、Content-Location 和 URI 标头中的 URL。
例如,假设本地服务器有地址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 在此处提供的功能)。它还负责服务器 backend.example.com 发送的重定向:http://backend.example.com/bar被他重定向到http://backend.example.com/quuxApache 将其调整为http://example.com/mirror/foo/quux在将 HTTP 重定向响应转发给客户端之前。请注意,用于构建 URL 的主机名是根据 UseCanonicalName 指令的设置来选择的。