获取真实的ip


场景一:无CDN情况

  直接通过默认方法获取  HttpContext.Current.Request.UserHostAddress;

场景二:阿里云CDN


   当一个七层代理服务器(如高防IP)把用户的访问请求转到后端服务器时,源站默认看到的是这个七层代理服务器(如高防IP)的回源IP。而真实的客户端IP会被七层代理服务器放在HTTP头部的X-Forwareded-For字段,格式如下:X-Forwarded-For: 用户真实IP, 高防代理IP。
如果中间经过不止一个代理服务器(如经过了WAF、CDN等等代理服务器),此时HTTP头部的X-Forwarded-For字段的格式如下:X-Forwarded-For: 用户真实IP, 代理服务器1-IP, 代理服务器2-IP, 代理服务器3-IP, …。

经过多层代理服务器,请求用户的真实IP处于第一个位置,而后面包含所有经过的中间代理服务器的IP。因此,只要获取HTTP头部的X-Forwarded-For字段的内容即可。

     具体实现代码截图:



如果通过了CDN

场景三: 阿里云CDN,  A站点转发B站点


从head 内容中可以看到多了一个X-ARR-LOG-ID,B站点获取ip的方法和场景二相同。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值