专栏首页物流IT圈老大说,网上这种获取真实IP地址的方法不对,我不信

老大说,网上这种获取真实IP地址的方法不对,我不信

想必大家对这段代码并不陌生:

是的,你搜索到的“java获取真实IP地址”大多都是如此。但是,以上代码真
的对吗?

那么我们看一下具体的代码。如上,判断ip地址的优先级是

"x-forwarded-for">
"Proxy-Client-IP">
"WL-Proxy-Client-IP">
request.getRemoteAddr()

其中带引号的都是从header中获取的。

等等!我们都知道header中的值是可以更改的。比如:

其中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 ;
}

本文分享自微信公众号 - 物流IT圈(exiter18),作者:程序员圣经

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 假装我是一个牛B的架构师(三)

    大一些的平台,一分钟就要接几万单。不同的订单通过不同的渠道下单,比如,平台有PC端,app端,微信端等等各种不同的渠道下的订单,统一都堆积在平台的订单池里。这么...

    物流IT圈
  • 写给供应链产品经理:浅谈订单系统的设计

    订单管理是一个常见的管理问题,包含在企业的订单处理流程中。由于客户/用户下订单的方式多种多样、订单执行路径千变万化、产品和服务不断变化、发票开具难以协调,这些情...

    物流IT圈
  • 京东到家库存系统架构设计

    目前,京东到家库存系统经历两年多的线上考验与技术迭代,现服务着万级商家十万级店铺的规模,需求的变更与技术演进,我们是如何做到系统的稳定性与高可用呢,下图会给你揭...

    物流IT圈
  • IP黑名单质量如何提升?看看BLAG

    近几年,威胁情报在网络安全领域展现出其独有价值,结合大数据技术、人工智能技术,威胁情报可为企业提供决策支撑信息,降低企业整体风险,具有光明的应用前景,可威胁情报...

    绿盟科技研究通讯
  • windows 多 IP 时指定流量外访的出口 IP

    在 window 环境下(windows server2008/vista及以上版本)中,绑定了辅助IP后,主动外访时有可能不再走主IP。本文讲述该问题排查过程...

    腾讯云网络产品团队
  • 腾讯云服务器自助更换IP教程(无需任何费用)

    1.我们需要先将IP转换为弹性公网IP,点击如下位置即可(转换为弹性公网IP后才能对IP进行解绑更换等操作)

    古人诗
  • 打造超级IP,你真悟错了道!

    这是一个人人都在离不开IP的时代,从动漫、影视、游戏、图书到体育、明星,甚至网红、主题公园和玩偶,IP成了无孔不入的存在,资本追逐、人们“爱戴”、品牌商趋之若...

    曾响铃
  • 用LUA字典进行IP数据去重操作

    因为业务需要,监控手机客户端对服务器在一分钟内请求的总数和IP访问量(求PV、IP数),要对IP数据进行去重操作,单位时间1分钟的HTTP请求,IP相同的只保留...

    糖果
  • 分享-python爬虫遇到封IP+验证码+登陆限制,如何解决?

    现在国家在鼓励做大数据、全面进行数字化中国建设,很多企业包括很多有前瞻性的创业人都开始进军大数据,各种根据自己的擅长领域开始储备数据源,我们需要做大数据第一步就...

    孔雀
  • 【普】静态IP和动态IP有什么区别?

        动态IP和静态IP的区别在于:动态IP需要在连接网络时自动获取IP地址以供用户正常上网,而静态IP是ISP在装机时分配给用户的IP地址,可以直接连接上...

    青果云小潘

扫码关注云+社区

领取腾讯云代金券