我目前有一个Tomcat + Apache HTTP服务器设置来服务我的Java servlet:
ProxyPass /myservice http://localhost:8080/myservice ProxyPassRerverse /myservice http://localhost:8080/myservice
一切都很好,只是myservice需要知道客户端IP地址,由于代理,该IP地址始终为127.0.0.1。是否有获取真实IP地址的解决方案?是否可以选择AJP?
myservice
doGet(HttpServletRequest request, HttpServletResponse response){ request.getRemoteAddr() }
像这样做:
在apache配置中:
<Location /foo> ProxyPass ajp://localhost:8009/foo ProxyPassReverse ajp://localhost:8009/foo </Location>
然后在您的server.xml中:
<Connector port="8009" enableLookups="false" secure="true" URIEncoding="UTF-8" tomcatAuthentication="false" protocol="AJP/1.3" />
那应该通过一切。AJP协议会传递信息,但http:不会。
您可能不希望使用secure =“ true”,因为SSL是在apache层处理的,因此我需要使用tomcat才能知道该连接应被视为安全连接。