Haproxy 真实 IP + Cloudflare

sfa*_*ult 8 haproxy cloudflare

我似乎无法完成这件事。我仍然在我的日志中看到 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
Run Code Online (Sandbox Code Playgroud)

有人知道从 Cloudflare 获取真实 IP 的正确配置吗?或者可能相当于 nginx 的 set_real_ip_from cloudflareIP 和/或 real_ip_header CF-Connecting-IP 到 haproxy?谢谢。

Jer*_*ost 7

你这样做:

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
Run Code Online (Sandbox Code Playgroud)
  • 测试时要小心,因为 KeepAlive 你可能每次都需要使用新的浏览器/标签。


Dav*_*ave 1

实际上你应该什么也不做。问题是您正在尝试插入转发,除了难以管理的 cloudflare IP 列表之外,但您的所有流量都来自 cloudflare。

只需删除任何forwardfor选项,cloudflare标头将通过haproxy持续存在。

如果您必须执行类似的操作,请确保添加“option httpclose”以确保它始终执行此操作。

  • “无论如何,您的所有流量都来自 cloudflare” - 在这种情况下,您如何相信所有流量都来自 Cloudflare?什么会阻止某人使用主机文件(例如)绕过 Cloudflare? (2认同)