HAProxy - SSL SNI 不便

HAProxy - SSL SNI inconvenience

当我尝试配置 SSL SNI 时,我发现 haproxy 1.5 中存在一些不便。

有一段haproxy配置:pastebin

我想将客户端 IP 传递给后端。无论我如何配置 reqadd / set-header X-Forwarded-For / Real-IP 我总是在 X-Forwarded-For 中得到一个 haproxy IP 地址。

有人尝试在 HAProxy 上使用 SSL SNI 传递真实 IP ? :/

从这个配置来看,您似乎在做 SNI-sniffing,但所有后端都在循环回 HAProxy 本身……这不是需要 SNI-sniffing 的情况。也许我忽略了其他需要这个的东西。

X-Forwarded-For 中获取代理 IP 的原因应该很明显——HAProxy 正在与自己对话。第一次通过代理 客户端连接,只要代理可以在第二次通过时确定,因为只有第二次通过 HTTP。它只看到传入的 TCP 连接已经到达...来自它自己。

解决方案是 first-pass 后端使用代理协议传递原始客户端信息,然后 second-pass 前端对其进行解码。

accept-proxy 添加到 second-pass 前端的 bind 行,并将 send-proxy 添加到 first-pass 前端的 server 行后端。这样,在 HAProxy 与自身对话的连接上,first-pass 后端将发送 Proxy 协议前导码,而 second-pass 前端将解码传入值并将其放入 X-Forwarded-For