HAProxy 做 TCP 反代获取客户端真实 IP
大约半年前,因为一些奇怪的原因,需要给博客添加 HAProxy 做基于 TCP 的反代,配置倒也简单,但是遇到一个很麻烦的问题,就是服务端无法获取到客户端的真实 IP 了,所有访问都有一个共同的来源:127.0.0.1,简直可怕。
当初解决这个问题也花了点时间,Google 了好几圈总算给解决了,分享一下解决方案。
全局配置就不贴了,关键配置如下:
frontend ft_ssl_vip
bind <公网 IP>:443
mode tcp
timeout client 5m
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
use_backend bk_ssl_nanpuyue_com if { req.ssl_sni -i nanpuyue.com }
use_backend bk_ssl_nanpuyue_com if { req.ssl_sni -m end .nanpuyue.com }
default_backend bk_ssl_nanpuyue_com
# nanpuyue.com
backend bk_ssl_nanpuyue_com
mode tcp
server http 127.0.0.1:2066 send-proxy
frontend ft_ssl_nanpuyue_com
mode http
bind 127.0.0.1:2066 ssl crt /path/nanpuyue_com.pem accept-proxy
option forwardfor
reqadd X-Forwarded-Proto:\ https
default_backend bk_http_nanpuyue_com
backend bk_http_nanpuyue_com
mode http
server http 127.0.0.1:80
server https 127.0.0.1:443 ssl verify none