如何配置Envoy重写X-Forwarded-For头 解决客户端伪造值干扰真实IP获取问题
Envoy X-Forwarded-For 自定义值屏蔽配置方案
问题根因
当前默认配置下Envoy会保留请求中携带的所有X-Forwarded-For内容,再在末尾追加当前请求的直连IP,因此客户端主动传入的自定义XFF值会被保留,最终传递给上游的XFF会出现不可信的拼接结果。
调整方案
根据你的部署场景选择对应配置即可:
场景1:Envoy为直接对外的入口网关,无前置七层代理
使用以下配置,Envoy会自动丢弃所有外部客户端主动传入的XFF值,仅基于直连IP生成可信XFF:
use_remote_address: true xff_num_trusted_hops: 0 skip_xff_append: false # 新增:受信任代理地址段,无前置代理时仅保留回环地址 trusted_proxies: - address_prefix: "127.0.0.1" prefix_len: 32 - address_prefix: "::1" prefix_len: 128
场景2:Envoy前有前置代理(如CDN、其他七层网关)
将前置代理的IP段加入trusted_proxies,同时将xff_num_trusted_hops调整为前置代理的层数即可,示例:
use_remote_address: true # 前置有1层代理设为1,多层依次累加 xff_num_trusted_hops: 1 skip_xff_append: false trusted_proxies: # 加入所有前置代理的IP段 - address_prefix: "10.0.0.0" prefix_len: 8 - address_prefix: "172.16.0.0" prefix_len: 12 - address_prefix: "192.168.0.0" prefix_len: 16
调整后上游服务收到的X-Forwarded-For头将不再包含客户端自定义的不可信值。
内容的提问来源于stack exchange,提问作者user16791596
相关产品推荐
相关产品推荐

