HAProxy + emqx 三节点 ,无法获取客户端真实IP

给你点赞 @jokin 这是一个非常典型的场景。4层代理客户端实际的 IP 端口是需要 LB (HAproxy) 发过来的。要配置2个地方:

  1. 打开 emqx.conf 对应监听器的 proxoy_protocol:

    listener.tcp.external.proxy_protocol = on
    
  2. 配置 HAProxy,让它把客户端的 IP/Port 发到 emqx。例如,在 haproxy.cfg 的 backend 的 每个server 后面加上 send-proxy-v2

    # 参考: http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.2-send-proxy-v2-ssl
    
    backend emqx_tcp_backend
        mode tcp
        server node1 192.168.1.100:1883 send-proxy-v2
    
2 个赞