仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 663|回复: 8
打印 上一主题 下一主题

[CentOS(社区)] 给大家带来nginx代办署理 猎取不到客户真个实在IP成绩

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:27:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
欢迎大家来到仓酷云论坛!在Linux情况下,使用了Nginx的强势―反向代办署理,了局招致用request.getRemoteAddr()猎取的IP均为公司的代办署理办事器的IP,日记纪录严峻禁绝确!
  人人都晓得在办事器端猎取客户真个IP地点的***是:request.getRemoteAddr(),这类***在年夜局部情形下都是无效的。
可是在经由过程了Nginx,Squid等反向代办署理软件就不克不及猎取到客户真个实在IP地点了。
假如利用了反向代办署理软件,比方将http://192.168.101.88:80/的URL反向代办署理为http://pay.kedou.com/的URL时,用request.getRemoteAddr()***猎取的IP地点是:127.0.0.1 或 192.168.101.88,而并非客户真个实在IP。
  本来是client端间接哀求办事端,走A线路哀求,这时候候经由过程request.getRemoteAddr()***能够筹办的猎取客户真个IP。可是做了代办署理以后呢,client端不是间接哀求办事端,而是走B线路哀求代办署理办事器,由代办署理器往哀求办事端,这时候候办事端经由过程request.getRemoteAddr()***拿到的天经地义是
代办署理办事器的地点了。

 经由代办署理今后,因为在客户端和办事之间增添了两头层,因而办事器没法间接拿到客户真个IP,办事器端使用也没法间接经由过程转发哀求的地点前往给客户端。可是在转发哀求的HTTP头信息中,增添了X-FORWARDED-FOR信息。用以跟踪原本的客户端IP地点和本来客户端哀求的办事器地点。当我们会见http://pay.kedou.comindex.htm/时,实在并非我们扫瞄器真正会见到了办事器上的index.htm/文件,而是先由代办署理办事器往会见http://192.168.101.88:80/index.htm,代办署理办事器再将会见到的了局前往给我们的扫瞄器,由于是代办署理办事器往会见index.htm的,以是index.htm中经由过程request.getRemoteAddr()的***猎取的IP实践上是代办署理办事器的地点,并非客户真个IP地点。
因而可得出取得客户端实在IP地点的

  1. ***一:  publicStringgetRemortIP(HttpServletRequestrequest){if(request.getHeader(”x-forwarded-for”)==null){returnrequest.getRemoteAddr();  }returnrequest.getHeader(”x-forwarded-for”);  但是当我会见http://pay.kedou.comindex.htm/时,前往的IP地点一直是unknown,也并非如上所示的127.0.0.1 或 192.168.101.88了因而可得出取得客户端实在IP地点的
复制代码

  1. ***二:  publicStringgetIpAddr(HttpServletRequestrequest){  Stringip=request.getHeader(”x-forwarded-for”);  if(ip==null||ip.length()==0||”unknown”.equalsIgnoreCase(ip)){  ip=request.getHeader(”Proxy-Client-IP”);  }if(ip==null||ip.length()==0||”unknown”.equalsIgnoreCase(ip)){  ip=request.getHeader(”WL-Proxy-Client-IP”);  }if(ip==null||ip.length()==0||”unknown”.equalsIgnoreCase(ip)){  ip=request.getRemoteAddr();  }returnip;  }
复制代码

但是,假如经由过程了多级反向代办署理的话,X-Forwarded-For的值其实不止一个,而是一串Ip值,事实哪一个才是真实的用户真个实在IP呢?
  谜底是取X-Forwarded-For中第一个非unknown的无效IP字符串。
  如:
  X-Forwarded-For:192.168.101.88,192.168.101.128,192.168.101.126

  1.   用户实在IP为:192.168.101.88  因而猎取终极版代码  //猎取客户端IP地点,撑持代办署理办事器  publicstaticStringgetIpAddress(HttpServletRequestrequest){  Stringip=request.getHeader("x-forwarded-for");  StringlocalIP="127.0.0.1";  if((ip==null)||(ip.length()==0)||(ip.equalsIgnoreCase(localIP))||"unknown".equalsIgnoreCase(ip)){  ip=request.getHeader("Proxy-Client-IP");  }if((ip==null)||(ip.length()==0)||(ip.equalsIgnoreCase(localIP))||"unknown".equalsIgnoreCase(ip)){  ip=request.getHeader("WL-Proxy-Client-IP");  }if((ip==null)||(ip.length()==0)||(ip.equalsIgnoreCase(localIP))||"unknown".equalsIgnoreCase(ip)){  ip=request.getRemoteAddr();  }returnip;  }
复制代码



如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-16 18:14:26 | 只看该作者

给大家带来nginx代办署理 猎取不到客户真个实在IP成绩

Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
简单生活 该用户已被删除
板凳
发表于 2015-1-23 05:40:18 | 只看该作者
虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。
海妖 该用户已被删除
地板
发表于 2015-1-31 16:28:18 | 只看该作者
如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。
山那边是海 该用户已被删除
5#
发表于 2015-2-6 22:54:39 | 只看该作者
尽量不要提问纯属是扯蛋.学习Linux特别是自己一个人初学入手的时候没人教很困难.当然如果可以的话平时多去买些Linux书...对学习Linux很有帮助.
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-19 07:11:41 | 只看该作者
有疑问前,知识学习前,先用搜索。
小女巫 该用户已被删除
7#
发表于 2015-3-6 14:12:12 | 只看该作者
随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。
透明 该用户已被删除
8#
发表于 2015-3-13 03:09:45 | 只看该作者
Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-20 11:49:47 | 只看该作者
上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-25 15:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表