我似乎无法完成这件事。我仍然在我的日志中看到cloudflare IP。目前,我有一个负载均衡器,它位于Cloudflare之后。
目前,这里是与forwardfor相关的块:
option forwardfor except 127.0.0.1
option forwardfor except 204.93.240.0/24
option forwardfor except 204.93.177.0/24
option forwardfor except 199.27.128.0/21
option forwardfor except 173.245.48.0/20
option forwardfor except 103.22.200.0/22
option forwardfor except 141.101.64.0/18
option forwardfor except 108.162.192.0/18
option forwardfor header X-Real-IP
reqadd X-Forwarded-Proto:\ http
有没有人知道正确的配置从Cloudflare获取真正的IP?或者也许相当于nginx的set_real_ip_from cloudflareIP和/或real_ip_header CF-Connecting-IP到haproxy?感谢。
答案 0 :(得分:2)
你实际上应该什么都不做。问题是你试图插入一个forwardfor,除了难以管理的cloudflare IP列表,但你的所有流量都来自cloudflare。
只需取出任何forwardfor选项,cloudflare标题将通过haproxy持续存在。
如果你必须做类似于你正在尝试的事情,请确保添加“选项httpclose”以确保它始终如此。
答案 1 :(得分:2)
你在寻找的是:
http-request add-header X_FORWARDED_FOR %[req.hdr(CF-Connecting-IP)]
这将添加正确的cloudflare源IP。
如果您什么都不做,那么您最终会得到src
地址和cloudflare地址的两个标头。
答案 2 :(得分:2)
您可以这样做:
cloudflare_ips.lst
,其中包含https://www.cloudflare.com/ips-v4和https://www.cloudflare.com/ips-v6的所有IP范围option forwardfor
HaProxy配置:
acl from_cf src -f /path/to/cloudflare_ips.lst
acl cf_ip_hdr req.hdr(CF-Connecting-IP) -m found
http-request set-header X-Forwarded-For %[req.hdr(CF-Connecting-IP)] if from_cf cf_ip_hdr