apache反向代理 - 如何隐藏内部网络

时间:2013-08-30 08:31:14

标签: apache reverse reverse-proxy

我的情况是这样的:我有一台Apache 2.2配置为反向代理的机器 另一台机器上有Apache Tomcat7侦听端口8080。

我的目标是让互联网用户访问资源“am”(部署在Tomcat上) 没有使用Tomcat机器的IP地址,只能联系反向代理。

到目前为止,我设置了反向代理的httpd.conf:

ProxyPass / am http://tomcat_server.com:8080/am ProxyPassReverse / am http://tomcat_server.com:8080/am

但问题是反向代理告诉用户联系tomcat_server 但当然tomcat_server是私有IP,互联网用户无法访问。

2 个答案:

答案 0 :(得分:1)

Tomcat server.xml 配置文件中

编辑http 连接器以包含属性: proxyPort proxyName - 使其类似于:

<Connector
 port="8080"
 protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443"
 proxyPort="80"
 proxyName="url.domain.clients.use.for.your.webapp"
 />
  • proxyPort =“80” - 使Tomcat将数据返回给您的Apache代理
  • proxyName =“url.domain.clients.use.for.your.webapp” - 让Tomcat将url返回给用户客户端应该处理的Apache代理,而不是tomcat_server.com他们无法访问

以下是一些提及它的较旧的Tomcat文档:

的proxyName

  

如果在代理配置中使用此连接器,请配置   此属性指定要为调用返回的服务器名称   request.getServerName()。有关详细信息,请参阅代理支持。

代理支持

  

运行Tomcat时可以使用proxyName和proxyPort属性   在代理服务器后面。这些属性修改返回的值   调用request.getServerName()和的Web应用程序   request.getServerPort()方法,通常用于构造   重定向的绝对URL。没有配置这些属性,   返回的值将反映服务器名称和端口   收到代理服务器的连接,而不是服务器   客户指示原始请求的名称和端口。

我完成了类似的需求,让Tomcat只在其localhost上监听:

How can Tomcat 9 Connector listening 127.0.0.1 reverse proxy to Win. Apache 2.4 with private ServerName

答案 1 :(得分:0)

如果您的问题是HTML中对原始服务器的引用,请查看mod_proxy_html或mod_substitute。