HAProxy tcp方式源客户端ip

HAProxy tcp mode source client ip

我在 HAProxy 中有以下设置

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log global
    retries 2
    option  dontlognull
    timeout connect 10000
    timeout server 600000
    timeout client 600000

frontend https
    bind 5.x.x.x:443
    default_backend https

backend https
    mode tcp
    balance roundrobin
    option tcp-check
    server traefik 192.168.128.5:9443 check fall 3 rise 2

它按预期工作,后端服务器 "traefik" 正在执行请求的 SSL 终止。

问题是我在后端服务器中获取的客户端源IP是HAProxy的IP,我想将源IP传递给后端服务器。

有可能吗?因为我尝试了我在网上看到的所有选项。

谢谢。

最后的解决方案是使用 https://www.haproxy.com/blog/haproxy/proxy-protocol/,因为它受 HAProxy 和 traefik 的支持。

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log global
    retries 2
    option  dontlognull
    timeout connect 10000
    timeout server 600000
    timeout client 600000

frontend https
    bind 5.x.x.x:443
    default_backend https

backend https
    mode tcp
    balance roundrobin
    option tcp-check
    server traefik 192.168.128.5:9443 check fall 3 rise 2 send-proxy

并启用 traefik 的入口点代理协议,如下所述:https://docs.traefik.io/configuration/entrypoints/#proxyprotocol