我试图在Struts2中获取客户端IP地址。请求通过Apache web服务器路由到Tomcat服务器,两台服务器驻留在同一台物理服务器上。客户端和Apache之间的连接是安全的,但Apache和Tomcat之间的连接不安全。当我试图获取客户端IP地址时,我总是得到127.0.0.1。如何从Apache服务器获取Struts2 2/Servlet中的客户端IP地址?
提前感谢!
发布于 2014-02-16 04:32:19
您可以在servlet中获得客户机的IP地址-
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
// Proxy
String userIpAddress = httpServletRequest.getHeader("X-Forwarded-For");
if(userIpAddress == null) {
userIpAddress = request.getRemoteAddr();
}发布于 2014-02-16 04:48:57
当我试图获取客户端IP地址时,我总是得到127.0.0.1。
这是因为当您在Tomcat中的servlet中看到请求时,Apache前端已经(反向)代理了它,而且Apache <-> Tomcat流量正在环回网络上运行。
解决方案是检查代理添加的标头;例如,请参见@Alexey的答案。
有几件事要注意:
https://stackoverflow.com/questions/21806403
复制相似问题