HAProxy代理后端服务取真实IP
HAProxy代理后端服务取真实IP
两台局域网内的webpy服务A、B,一台HAProxy用来做代理P,配有域名p.com
前期的请求从p.com访问没有问题,但有一个请求是需要记录客户端的IP,并针对客户端IP返回不同信息的。
这种情况下出问题了,A、B取到的都是P的内网IP:10.2.2.250
系统配置人员调整了P的策略,加上透传机制,但不知道哪里有问题配置上后就无法正常访问后台服务A、B。
此问题没有解决的情况下,海外运营需要将域名p.com放到Akamai加速中,突然发现A、B能取到客户端IP了,原因未明。。。
直接访问B和通过p.com访问,打出HTTP相关头参数,发现通过p.com访问HTTP头多了以下信息:
HTTP_VIA:1.1 v1-akamaitech.net(ghost) (AkamaiGHost), 1.1 v1-akamaitech.net(ghost) (AkamaiGHost), 1.1 akamai.net(ghost) (AkamaiGHost)
HTTP_X_FORWARDED_FOR:202.108.36.107, 184.50.87.135, 10.123.65.61
HTTP_AKAMAI_ORIGIN_HOP:3
HTTP_X_AKAMAI_CONFIG_LOG_DETAIL:true
直接访问B或者通过P的IP访问:
REMOTE_ADDR:10.2.2.250
通过p.com访问:
REMOTE_ADDR:202.108.36.107
基本判断是通过HTTP_X_FORWARDED_FOR传入真实IP了,用python写个脚本伪造此信息:
def GET2(strUrl):
r = urllib2.Request(strUrl)
r.add_header('X-Forwarded-For', '12.34.56.78')
doc = urllib2.urlopen(r)
return doc.read()
访问后看到以下值:
HTTP_X_FORWARDED_FOR:12.34.56.78
REMOTE_ADDR:12.34.56.78
无论是访问P的IP还是访问B,结果都一样,而webpy是通过web.ctx.ip取的就是REMOTE_ADDR,通过Akamai加速后,也就能取到真实IP了。
当然这种情况下如果有需要的话也可以伪造,这也可以给测试提供条件,直接可以用海外IP来测试相关处理逻辑了。
参见:
http://rdc.gleasy.com/使用haproxy和tproxy实现全透明代理.html
http://www.cnblogs.com/txw1958/archive/2012/03/12/2392067.html
http://blog.csdn.net/intel80586/article/details/8906779
HAProxy代理后端服务取真实IP相关推荐
- Haproxy 让后端RS记录真实IP
#让RS记录客户端的真实IP #1.先在haproxy.cfg中加入下面参数. listen www ... option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数, ...
- Haproxy 代理后端服务
参考 http://www.haproxy.org HAProxy · GitHub 目录 一.Haproxy环境准备 1.Haproxy简介 1.1.haproxy原理 1.2.Haproxy优点 ...
- Linux学习-HaProxy代理后端Nginx
代理作用:web缓存(加速),反向代理.内容路由(根据流量及内容类型将请求转发至特定服务器),转码器 缓存作用:减少冗余内容传输,节省带宽.缓解网络瓶颈,降低对原始服务器压力,降低传输延迟 Hapro ...
- 真正的取真实IP地址及利弊Asp.net
真正的取真实IP地址及利弊Asp.net 真正的取真实IP地址及利弊Asp.net http://tech.aspxsoft.com/aspnet/2006-3-16/425.aspx 真正的取真实I ...
- 真正的取真实IP地址及利弊
目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAddress = (HttpContext.Curren ...
- C#取真实IP地址及分析
说一哈,我也是转来的,不是想骗PV,方便自己查而已! 目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAd ...
- 查找“CDN、负载均衡、反向代理”等大型网络真实IP地址的方法
查找"CDN.负载均衡.反向代理"等大型网络真实IP地址的方法 首先,CDN.负载均衡.反向代理还分为很多层,有时查出来的是最外层的 CDN 服务器群,真实的机器是不对外开 ...
- PHP、Tomcat获取Nginx代理后的客户端真实IP
PHP.Tomcat获取Nginx代理后的客户端真实IP 文章目录 PHP.Tomcat获取Nginx代理后的客户端真实IP 一.PHP获取Nginx代理后客户端真实IP Nginx配置 PHP配置 ...
- C#取真实IP地址--多个代理背后的ip地址
//多个代理背后的ip地址文件名:IPAddress.csusing System; using System.Data; using System.Configuration; using Syst ...
最新文章
- python编的俄罗斯方块游戏下载_python写的俄罗斯方块游戏
- 4.12 《硬啃设计模式》 第29章 行为型设计模式小结
- 《按键消抖与LED控制》实验的个人思考与总结
- php5.3中ZendGuardLoader与wincache冲突问题的解决方法
- 挺水的一门课,发现全系都过了,就自己挂了,这是一种什么样的感觉呢?
- 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
- 负载均衡轮询算法和服务器性能,SpringCloud-Ribbon负载均衡机制、手写轮询算法
- Linux/deppin 中安装、卸载软件的几种命令
- 佳能Canon PIXMA TS208 打印机驱动
- 青鸟云课堂_青鸟云课堂
- 我用计算机的故事,计算机老师的我的教育故事随笔
- 带宽单位和下载速度的换算
- 苹果键盘怎么手写_今天才发现,苹果手机自带录音转文字功能,堪称会议神器...
- 美国基础设施法案对该国加密矿业会产生什么影响?
- AUTOCAD2012安装失败解决方法
- 解决Worker 1 failed executing transaction ‘ANONYMOUS‘ at master log mall-mysql-bin.000001, end_log_pos
- 【黄啊码】MySQL入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票
- 大数据技术特点及优势有哪些
- docker容器日常管理(四)
- 【HDU 2619】Love you Ten thousand years