获取真实的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字段的内容即可。

     具体实现代码截图:

获取真实的ip_第1张图片


如果通过了CDN

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

获取真实的ip_第2张图片

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




你可能感兴趣的:(C#学习)