使用方向代理后获得真实访问域名。
在apache的httpd-vhosts.conf中有以下配置,实现abc.com和efd.com访问同一个tomcat服务器。
?
<VirtualHost *:80>ServerName www.abc.comProxyPass / http://localhost:8091/ProxyPassReverse / http://localhost:8091/</VirtualHost><VirtualHost *:80>ServerName www.efd.comProxyPass / 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"))?
?
?