在proxyPass / reverseProxyPass

时间:2019-07-11 02:12:30

标签: apache httpd.conf

我有两台位于不同计算机上的服务器。我们已经将DNS内部的这些内容添加到了我们的网络中,以:

  • dev.server.com
  • prod.server.com

我们所有的应用程序都托管在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他们在地址栏中看到的内容。

1 个答案:

答案 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 应该会帮助。

相关问题