从反向代理请求中保留协议和端口号

时间:2014-02-06 09:31:24

标签: apache apache2 reverse-proxy httpd.conf mod-proxy

案例:

用户请求https://api.abc.com

这是http://internal.abc.com:123

的内部服务器服务器的反向代理(Apache 2.2)

根据Retain original request URL on mod_proxy redirect,添加:

ProxyPreserveHost On

到httpd.conf,internal.abc.com目前将原始请求URL识别为:

http://api.abc.com:123

我有什么方法可以恢复https://api.abc.com的原始网址?也就是说,还保留原始协议(http)和端口(80,或空也很好)

2 个答案:

答案 0 :(得分:2)

我解决这个问题的方法是在我的虚拟主机文件中添加一个标头。 RequestHeader set original-protocol-ssl true early

然后,您需要在代码中检查此标头,以确定其来源。

答案 1 :(得分:1)

ProxyRequests Off
ProxyPreserveHost On

ProxyPass / http://internal.abc.com:123
ProxyPassReverse / http://internal.abc.com:123

我在自己的测试中测试的代码,应该使用internal.abc.com:123并将其隐藏到您在<中添加代码的任何URL中。 virtualhost>括号中。

如果它的api.abc.com它应该将来自internal.abc.com:123的信息代理到api.abc.com而没有它背后的端口号。 ProxyPassReverse为您完成此任务。