在大部分实际业务场景中,网站访问请求并不是简单地从用户(访问者)的浏览器直达网站的源站服务器,中间可能经过所部署的CDN、高防IP、WAF等代理服务器。
#
例如,网站可能采用这样的部署架构:用户 > CDN/高防IP/WAF/游戏盾 > 源站服务器。这种情况下,访问请求在经过多层加速或代理转发后,源站服务器该如何获取发起请求的真实客户端IP?
#
问:如何获取访问用户的真实IP呢?
#
答:为解决这个问题,可以通过在舍末盾转发的HTTP头信息中增加 X-Forwarded-For 信息,用于记录客户端的真实IP,这时web服务器的日志就可以使用 $http\_x\_forwarded\_for变量记录远程客户端的真实IP。格式如下:
* Nginx
'$http\_x\_forwarded\_for - $remote\_user \[$time\_local\] "$request" ''$status $body\_bytes\_sent "$http\_referer" ''"$http\_user\_agent" ';
* Apache
LogFormat "%{X-Forwarded-For}i %l %u %t \\"%r\\" %>s %b \\"%{Referer}i\\" \\"%{User-Agent}i\\""
* ASP
Request.ServerVariables("HTTP\_X\_FORWARDED\_FOR")
* PHP
$\_SERVER\["HTTP\_X\_FORWARDED\_FOR"\]
* JSP
request.getHeader("HTTP\_X\_FORWARDED\_FOR")
已经接入舍末盾的用户,可以修改配置的方式,从日志中获取用户的真实IP,以便了解用户的访问情况。
#
#
## [源站获取客户端真实IP]()
舍末盾会在回源请求头中添加 X-Real-IP 和 X-Forwarded-For 两个字段来传递来访用户的真实IP,在源站服务器中可进行相应的[配置]()以便获取这两个字段的值。
#### [X-Real-IP 与 X-Forwarded-For 的区别]()
代理服务器(比如舍末盾)会把请求的来源IP写入 X-Real-IP 字段,然后发送给源站,这个字段只会有一个IP地址;而每经过一级代理,代理服务器会把来源追加到 X-Forwarded-For 中,在多次代理的情况下,则该字段会有多个IP地址(真实IP, 代理服务器1, 代理服务器2, ...)。
## [源站获取客户端真实端口]()
舍末盾会在回源请求头中添加 X-Real-Port 字段来传递来访用户的真实端口,源站可通过这个头部字段获取用户客户端真实的端口。
- 云防护文档
- 云防护说明介绍
- 什么是舍末盾
- 产品功能
- 功能特性
- 产品优势
- 应用场景
- IP应用加速防护
- 售前常见问题解答
- 海外CN2专线防护
- 高防服务器和云防御的区别
- 云防护快速入门
- 快速入门概览
- 源站IP回源协议
- CC防护模式详解
- WAF应用防火墙
- SSL证书快速部署
- 网站页面访问加速
- DDOS防护IP详解
- 安全数据统计报表
- 行业解决方案
- 金融安全解决方案
- 棋牌游戏解决方案
- 直播行业解决方案
- 常见问题
- CC攻击是什么?
- Error Cookie
- Error502 源站超时
- Error504 源站宕机
- Error445 请求拦截
- 如何检查源站状态?
- 如何获取访客真实IP?
- 舍末盾的回源节点IP列表
- 阿里云机器如何添加白名单?
- 舍末盾错误提示:没有找到站点?
- 使用舍末盾防护后出现502、504?
- 使用舍末盾防护后出现重定向过多?
- 如何排查连接超时问题?
- 如何使用traceroute?
- 添加域名和添加站点的区别
- 如何判断舍末盾服务是否生效
- 使用云防御有利于网站的SEO吗?
- 通过Proxy Protocol获取客户端真实 IP
- Nginx设置仅允许白名单IP访问
- 国家代码 - 最全中英文对照各国代码
- 服务条款
- 使用条款
- 隐私声明
- 权利义务
- 关于我们
- 公司介绍
- 公司资质