使用 ProxyPassReverse 更改 Location 响应标头

使用 ProxyPassReverse 更改 Location 响应标头

我正在实现一个反向 http 代理:

proxy.example.com

这将根据 URI 将请求转发到服务器:

proxy.example.com/server1 -> server1.example.com

当用户请求 proxy.example.com/server1 时,server1 会发送一个以编程方式生成的(Ruby Devise Gem)302 响应,其中包含以下“位置”值:

proxy.example.com/users/sign_in

我需要的是:

proxy.example.com/server1/users/sign_in

我在 Apache 中实现了以下配置:

    ProxyPass "/server1/" "http://server1.example.com/"
    ProxyPassReverse "/server1/" "http://server1.example.com/"

按照:

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypassreverse

此指令允许 Apache 调整 HTTP 重定向响应中的 Location、Content-Location 和 URI 标头中的 URL。当 Apache 用作反向代理(或网关)时,这非常重要,以避免由于位于反向代理后面的后端服务器上的 HTTP 重定向而绕过反向代理。

但是 server1 返回的 Location 标头仍然是:

proxy.example.com/users/sign_in

我的配置有问题吗?

答案1

弄清楚了:

ProxyPass "/server1/" "http://server1.example.com/"
ProxyPassReverse "/server1/" "http://proxy.example.com/"

相关内容