apache中设置如下反向代理:
<VirtualHost *:80>
ServerAdmin webmaster@a.com
DocumentRoot D:\app\apache-tomcat-6.0.29\webapps\news1
ServerName a.com
ServerAlias *.a.com
DirectoryIndex index.html index.html.var index.jsp
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ErrorLog "logs/bbs-error.log"
CustomLog "logs/bbs-access.log" common
</VirtualHost>
request.getServerName();获取到的主机名称就会是localhost,解决这个
问题的方法如下:
在httpd.conf 文件中增加:
ProxyPreserveHost On
即可。
另外也可以在tomcat的Connector中设置proxyName及proxyPort属性
比如:
proxyName="www.mycompany.com"
proxyPort="80"/>
mod_proxy把原始请求信息放在HTTP Header来传送,可以通过
req.getHeader("x-forwarded-for");
得到客户端的IP地址
req.getHeader("x-forwarded-host"); 得要服务器的域名
req.getHeader("x-forwarded-server"); 得到服务器的域