真实客户端 IP 与 X-Forwarded-For 配置
当客户端经过 CDN、WAF 或反向代理后,负载均衡的网络对端地址可能是代理地址。配置前先区分:网络连接来自谁、平台按哪个地址做访问判断、后端收到什么头部。
三个配置分别做什么
| 配置 | 位置 | 作用 |
|---|---|---|
| 是否解析客户端 X-Forwarded-For | 虚拟服务的“可信IP”区域 | 从收到的 XFF 地址链中提取客户端地址,用于相关访问判断和日志 |
| 可信 IP 集合 | 同一区域 | 指定从 XFF 链右侧向左查找时需要跳过的代理地址 |
| 设置 X-Forwarded-For | 七层 HTTP 策略 | 控制向后端传递 XFF 头部,不等于开启入站地址解析 |
SNAT 改变的是连接后端时的网络源地址,XFF 是 HTTP 头部。需要后端网络回程配置时,参见 SNAT 与后端回程配置。
第一步:明确代理链与入口范围
例如业务链路为“客户端 → WAF → 负载均衡”。应知道 WAF 使用哪些出口地址、如何清理和写入 XFF,并确认业务入口是否允许客户端绕过 WAF 直连。
可信 IP 集合用于解析地址链,不能代替入口访问控制,也不代表 XFF 已经过身份认证。客户端可以自行构造 HTTP 头部,只有代理链来源受控时,提取出的地址才适合用于业务访问控制。
第二步:创建可信 IP 集合
在【负载流量管理 → IP集合管理】中创建集合,填写实际代理地址或网段。只加入确实需要跳过的代理地址,不要为了让请求通过而将所有地址都设为可信。
若配置黑白名单,应另外创建对应集合,区分“需要跳过的代理”与“允许或禁止访问的客户端”。
第三步:在虚拟服务中开启解析
打开目标 HTTP/HTTPS 虚拟服务,向下滚动到“可信IP”区域,开启“是否解析客户端X-Forwarded-For”,选择可信 IP 集合。

上图展示开关入口;开启后再选择前一步创建的可信 IP 集合。
当前解析方式为:从 XFF 的最右侧向左查找,跳过可信集合内的地址,取遇到的第一个非可信地址。未收到 XFF 时使用连接对端地址;配置了 PROXY Protocol 时还需核对相应对端地址来源。不要直接把 XFF 最左边一项当成所有情况下的结果。
第四步:关联访问策略并执行变更
如果需要按提取出的地址限制访问,在访问策略中选择黑白名单集合,再由 HTTP 策略引用该访问策略,最后确认实际命中的分发规则使用这个 HTTP 策略。
保存并执行变更后,分别核对平台访问判断和后端收到的头部。需要向后端传递 XFF 时,在 HTTP 策略中配置“设置X-Forwarded-For”;后端也应有自己的可信代理配置。
用地址链验证解析结果
下面使用回归场景中的示例值说明:可信集合包含 1.1.1.1,黑名单包含 1.1.1.2,访问策略和虚拟服务已正确关联。
| 请求携带的 XFF | 提取的客户端地址 | 本例预期结果 |
|---|---|---|
1.1.1.2 | 1.1.1.2 | 被黑名单拒绝,403 |
1.1.1.2, 1.1.1.1 | 跳过可信项后得到 1.1.1.2 | 被拒绝,403 |
1.1.1.2, 1.1.1.9, 1.1.1.1 | 跳过末尾可信项,遇到 1.1.1.9 即停止 | 不命中本例黑名单,200 |
这些值仅用于说明匹配关系,不是其他环境的代理地址规划。还应验证无 XFF 请求,以及绕过代理直连的请求是否符合入口访问要求。
常见问题
| 现象 | 检查方向 |
|---|---|
| 日志里只有代理 IP | 是否开启解析,代理是否发送 XFF,请求是否到达目标虚拟服务 |
| 开了“设置 XFF”但黑名单无效 | 是否只修改了出站头部设置,而没有配置虚拟服务入站解析 |
| 同一请求改动 XFF 就改变访问结果 | 入口是否允许不受控客户端直连,代理是否清理外部伪造头部 |
| 单客户端限流把多人当成同一人 | 解析后的地址是否仍是代理/NAT 出口,实际使用的策略是否正确 |
| 后端连接源 IP 与日志客户端 IP 不同 | 区分 SNAT 网络源地址与 XFF 提取地址,两者可以不同 |
相关说明:HTTP 访问控制与限流、日志分析。
