如果我向后端服务器发送SSL流量,我可以在应用程序日志中看到客户端/源IP。
ssl://host_name:8883
问题:如果我把haproxy放在后端服务器之前,我会得到haproxy IP作为源IP。SSL终止发生在后端服务器上。
haproxy.cfg:
defaults
maxconn 64000
option http-server-close
option httplog
option forwardfor
option contstats
timeout connect 5000ms
timeout client 30000ms
timeout server 30000ms
timeout tunnel 3600000ms
timeout http-keep-alive 1000ms
timeout http-request 30000ms
timeout queue 30000ms
errorfile 504 /var/504.http
frontend tcp-frontend-mqtt-tls
mode tcp
bind :8883 accept-proxy
log global
log-format %ci %fi:%fp [%t] %ft %b/%s %Tw/%Tc/%Tt %B %ac/%fc/%bc/%sc/%rc %sq/%bq
tcp-request connection reject if { src -f /var/ip_blist.lst }
default_backend tcp-backend-mqtt-tls
backend tcp-backend-mqtt-tls
mode tcp
log global
balance leastconn
source 0.0.0.0 usesrc clientip
server mqtt-node-0 hostname:61008 resolvers my-dns check inter 1000
我已经尝试添加send-proxyv-v2
和send-proxy
server mqtt-node-0 hostname:61008 resolvers my-dns check inter 1000 send-proxy-v2
server mqtt-node-0 hostname:61008 resolvers my-dns check inter 1000 send-proxy
但这并没有帮助,因为SSL终止发生在后端。我是不是错过了什么?
send-proxy
是一个很好的方法,但您的后端服务器/应用程序需要能够解析PROXY协议来接收IP信息。