描述问题
项目使用apache作为代理服务器,端口4083
测试环境websphere作为应用服务器,端口18123
在前台jsp页面通过request.getserverPort方法获取服务器ip地址和端口,获取地址为websphere服务器的ip和端口。
网上查找解决方案,在apache中httpd.conf中<virtualHost>标签内添加proxypreservehost on 配置,再次访问jsp页面,获取ip正确为apache服务器地址,但端口还是websphere的端口。
在测试环境搭建一个tomcat,调整端口为18123,页面获取端口为正常(4083)
将apache代理目标设置为我本地测试环境,可以获取正确端口(4083)
查看浏览器接口情况,
发现连接websphere时,静态文件(js/css/png)是从最终服务器获取, action文件获取地址是apache服务器
当连接tomcat时,都是通过apache正常获取
总的来说就是通过代理服务器访问服务器,页面通过request.getserverPort方法获取端口,当服务器为websphere的时候,不能获取到正确的代理服务器端口,但是用tomcat作为服务器时,可以正确获取端口。
不知道是不是apache或websphere中有什么特殊配置,网上搜了很久也没解决。
httpd.conf配置
jsp页面,localport是用来对照的
action接口详情
静态文件接口详情