网站首页 > 技术教程 正文
作者:蔡永吉 来源:https://blog.csdn.net/takeurhand/article/details/52512200
想必大家对这段代码并不陌生:
是的,你搜索到的“java获取真实IP地址”大多都是如此。但是,以上代码真 的对吗?
那么我们看一下具体的代码。如上,判断ip地址的优先级是
"x-forwarded-for"> "Proxy-Client-IP"> "WL-Proxy-Client-IP"> request.getRemoteAddr()
其中带引号的都是从header中获取的。
等等!我们都知道header中的值是可以更改的。比如:
代码出自:https://github.com/caiyongji/vote-2.0/blob/master/Vote-2.0.js
其中headers属性X-Forwarded-For,WL-Proxy-Client-IP不就是被更改了吗?
那么,为什么会有这个版本的“java获取真实IP地址”的方法呢?并且搜索引擎所能检索到的结果大多都是这一个?
打个比方说,如果这个解决办法是一本秘籍的话,那么,我们找到的只是“java获取真实IP地址”残卷。
而剩下的部分在这里:
#Nginx 设置 location ~ ^/static { proxy_pass ....; proxy_set_header X-Forward-For $remote_addr ; }
这段配置是在前端Nginx反向代理上的(其他反向代理请自行搜索),这段配置
作的事情是将X-Forward-For替换为remote_addr,再将X-Forward-For在内网
各服务器间安全传输。
这里我再针对TCP/IP多做一些解释,众所周知TCP/IP建立连接时需要三次握手的,并且,只有知道了client端请求的IP地址,server端的数据才能返回给client,所以client想要获取到数据就必须提供真实的IP(DDOS攻击除外),而request.getRemoteAddr()获取的就是用户最真实的IP。
那么为什么不直接使用使用request.getRemoteAddr()这个方法呢?
如果没有反向代理的话当然可行。但是出于安全原因,现在大多数的服务都使用代理服务器(如Nginx,代理服务器可以理解为用户和服务器之间的中介,双方都可信任。),而用户对代理服务器发起的HTTP请求,代理服务器对服务集群中的真实部署的对应服务进行“二次请求”,所以最终获取的IP是代理服务器在内网中的ip地址,如192.168.xx.xx/10.xx.xx.xx等等。
所以在使用了反向代理的情况下,request.getRemoteAddr()获取的是反响代理在内网中的ip地址。所以在反向代理中将X-Forward-For替换为remote_addr,即,真实的IP地址。之后在内网中获取的x-forwarded-for便是真实的ip地址了。
最后给出完整解决方案(Nginx为例):
JAVA部分:
Nginx部分:
location ~ ^/static { proxy_pass ....; proxy_set_header X-Forward-For $remote_addr ; }
这就是差距啊~~~
- 上一篇: 别让SSL证书暴露了你的网站服务器IP
- 下一篇: 教你用Java获取IP归属地,最高可精确到街道
猜你喜欢
- 2024-10-15 CentOS7下FastDFS安装及配置(单节点)
- 2024-10-15 如何解决ELB和nginx配合使用时无法获取客户端真实IP的问题?
- 2024-10-15 聊聊部署在K8S的项目如何获取客户端真实IP
- 2024-10-15 教你用Java获取IP归属地,最高可精确到街道
- 2024-10-15 别让SSL证书暴露了你的网站服务器IP
- 2024-10-06 网站接入CDN后如何设置获取真实的用户IP地址信息
- 2024-10-06 使用python的正则截取nginx日志中IP和agent
- 2024-10-06 只有IP地址怎么部署HTTPS证书(本地连接没有有效的ip配置怎么修复)
- 2024-10-06 应用获取客户端真实IP(获取客户端什么意思)
- 2024-10-06 Java获取请求者的真实IP地址(java获取请求者的真实ip地址怎么写)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)