ProxyPass、ProxyReverse 与 AJP

2024-04-27

我目前有一个 Tomcat + Apache HTTP 服务器设置来为我的 Java servlet 提供服务:

ProxyPass /myservice http://localhost:8080/myservice
ProxyPassRerverse /myservice http://localhost:8080/myservice

这一切都很好,除了myservice需要知道客户端 IP 地址,由于代理的原因,该地址始终是 127.0.0.1。有没有办法获取真实IP地址? AJP 是一种选择吗?

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

像这样做:

在阿帕奇配置中:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ProxyPass、ProxyReverse 与 AJP 的相关文章

随机推荐