一尘不染

ProxyPass,ProxyReverse与AJP

tomcat

我目前有一个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?

doGet(HttpServletRequest request, HttpServletResponse response){
    request.getRemoteAddr()
}

阅读 257

收藏
2020-06-16

共1个答案

一尘不染

像这样做:

在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才能知道该连接应被视为安全连接。

2020-06-16