使用方向代理后获得真实访问域名。

在apache的httpd-vhosts.conf中有以下配置,实现abc.com和efd.com访问同一个tomcat服务器。

 

<VirtualHost *:80>
ServerName www.abc.com
ProxyPass / http://localhost:8091/
ProxyPassReverse / http://localhost:8091/
</VirtualHost>

<VirtualHost *:80>
ServerName www.efd.com
ProxyPass / http://localhost:8091/
ProxyPassReverse / http://localhost:8091/
</VirtualHost>

 在tomcat中获得当前访问的域名,如果通过getServerName每次获得的都是localhost:8091,而我们需要的abc.com或者efd.com。其实在使用了反向代理以后,mod_proxy会把原始请求信息放在HTTP Header来传送

X-Forwarded-For :客户端IP地址
X-Forwarded-Host : 原始的请求地址
X-Forwarded-Server :代理服务器的hostname·

 在java中通过request.getHeader获得。

request.getHeader("X-Forwarded-Host"))
 

 

 

你可能感兴趣的:(apache,tomcat)