Apache-通过一台服务器代理不同的服务

时间:2019-02-13 09:38:36

标签: apache web-services proxy

我的目标是通过一个代理服务器访问网络中的不同Web服务。背景问题是代理服务器是客户端可以访问的唯一服务器。

代理服务器的IP为192.168.1.1,我在IP 192.168.1.124上运行了一个Web服务(IP和名称仅是示例)。 当客户端服务器访问http://192.168.1.1/webservice/时,他的请求必须转发到http://192.168.1.124/,但是客户端应该永远不会看到Web服务的实际IP。客户端的浏览器仍然应该只看到URL http://192.168.1.1/webservice/ *。 另外,客户端会话仍应通过此代理连接工作,并且如果Web服务执行任何重定向,则必须捕获它们并将其附加到代理URL。 例如,当网络服务将第一个请求重定向到http://192.168.1.124/home.html时,客户端应看到http://192.168.1.1/webservice/home.html

我在Google上搜索了很多,但无法提出合适的解决方案。 我使用的最后一个配置是:

ProxyPreserveHost On
ProxyRequests Off
ProxyPass /snipeit/ http://192.168.1.124/
ProxyPassReverse /snipeit/ http://192.168.1.124/

使用此配置,请求以我想要的方式转发到Web服务。但是,当网络服务使用诸如http://192.168.1.124/home.html之类的不同URL进行答复时,客户端将被重定向到http://192.168.1.1/home.html,并且浏览器显示404错误。因为它应该转到http://192.168.1.1/webservice/home.html。当我手动键入此URL时,将获得正确的页面。

我做错了什么?/我想念什么? 预先感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法吗?
(首先确保启用mod_proxy_html

<Location /app1/>
        ProxyHTMLURLMap / /app1/
</Location>
<Location /app2/>
        ProxyHTMLURLMap / /app2/
</Location>