我有两台位于不同计算机上的服务器。我们已经将DNS内部的这些内容添加到了我们的网络中,以:
我们所有的应用程序都托管在prod.server.com上,但是我的团队使用prod上尚不可用的一种语言版本编写了一个新应用程序。为了允许用户使用它,我想让用户保持在产品环境中,并带有指向此新应用程序的链接-但是从用户的角度来看,我不希望他们看到自己被重定向到dev.server .com,我希望他们的地址栏保持原样。当他们单击链接转到prod.server.com/new_application
时,我希望他们的地址栏说prod.server.com/new_application
,但我希望它加载 dev.server.com/new_application
阅读几个小时后,看来精确的方法是通过ProxyPass和ReverseProxyPass。
在我的Apache中,我确保正在加载以下两个模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
然后,继续执行以下操作:
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
#### Proxy Stuff
#ProxyRequests On
ProxyPass /new_application/ http://dev.server.com/new_application/
ProxyPassReverse /new_application/ http://dev.server.com/new_application/
当我单击托管在<a href="/new_application/">Click here</a>
上的prod.server.com
时,将加载dev.server.com/new_application
上的页面-所以我的一半问题都可以正常工作-但我无法一辈子了解如何让用户自己隐藏此隐藏内容,并保留prod.server.com/new_application
他们在地址栏中看到的内容。
答案 0 :(得分:1)
尝试: ProxyPassReverse / new_application / http://prod.server.com/new_application/
但是请注意,这仅“调整”对话的http标头部分中的URL。它无法解决从“产品”提供的内容中的任何“完整”网址。
(编辑)如果需要对内容中的链接进行更详尽的编辑,请参见https://httpd.apache.org/docs/2.4/mod/mod_proxy_html.html
。
您不需要
<Proxy *> ... </Proxy>
阻止-实际上,您可能不想要它...即启用正向代理。
使用ProxyRequests Off
保护您的服务器不被用作转发代理。
读起来很密集,但是 http://httpd.apache.org/docs/2.4/mod/mod_proxy.html 应该会帮助。