java - tomcat中奇怪的IP地址

标签 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应该在的地方会有这样的东西。 “未知,93.186.30.120”或“10.0.1.169,186.38.84.3” Apache 在前端监听端口 80,并用作监听端口 8081 的 Tomcat 的代理。 我的路由器配置不允许通过 80 以外的任何端口的任何连接。 有帮助吗? 提前致谢。

最佳答案

X-FORWARDED-FOR HTTP header 的格式为:

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

关于java - tomcat中奇怪的IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284889/

相关文章:

java - Openshift - EntityManager 没有持久性提供程序

java - 如何检测过期 session 与无 session

java - 将请求重定向到 servlet 中的 JSP 出错?

java - 将字符串的一部分作为参数传递

java - apache 上 php exec 的权限和 jar 文件位置

php - Apache 服务器日志错误。 AH00126 : Invalid URI in request GET, 等

java - Apache 共享数学 : Eigendecomposition of a tridiagonal matrix yields wrong result

java - 如何理解关于可执行jar的spring boot

java - 仅将textfield的提示文字居中

java - 带 64 位 JVM 的 MS Access 32 位