tomcat中的奇怪IP地址

时间:2012-07-01 19:11:17

标签: java apache tomcat networking servlets

我在某些通用类中有这个。

public static String getRequestIp (HttpServletRequest request){
  String ipaddr = request.getHeader("X-FORWARDED-FOR");
  if (ipaddr == null)ipaddr = request.getRemoteAddr();
  return ipaddr;
}

对于我称之为该方法的每个请求,并且在某个时刻我在mysql数据库中插入记录。

在大多数情况下,它正常工作,我可以在右侧字段中看到每个具有有效IP地址的请求的记录。但有时IP应该在哪里,就有这样的东西。 “unknown,93.186.30.120”或“10.0.1.169,186.38.84.3” Apache正在前端侦听端口80,并用作侦听端口8081的Tomcat的代理。 我的路由器配置不允许传递80以外的任何端口传来的任何连接。 任何帮助? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

X-FORWARDED-FOR HTTP标头的格式为:

X-Forwarded-For: client, proxy1, proxy2, ...

因此

unknown, 93.186.30.120 

表示来自代理的请求93.186.30.120,来自未知的本地地址;和

10.0.1.169, 186.38.84.3

同样意味着来自186.38.84.3代理的请求,来自本地ip 10.0.1.169

答案 1 :(得分:1)

“未知”X-Forwarded-For条目可能已由配置为不将原始客户端IP地址插入字段的代理插入。

Squid配置指令forwarded_for“,例如,有各种选项,如果设置为”on“,将附加客户端IP地址。如果设置为”off“,它将显示为”X-Forwarded-For:unknown“ “