当我尝试配置 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 嗅探,但所有后端都在循环回 HAProxy 本身……这不是需要 SNI 嗅探的情况。也许我忽略了其他需要这样做的东西。
您在 X-Forwarded-For
中获取代理 IP 的原因应该很明显——HAProxy 正在与自己对话。第一次通过代理是客户端连接,只要代理可以在第二次通过时确定,因为只有第二次通过 HTTP。它只看到传入的 TCP 连接已经到达......来自它自己。
解决方案是第一遍后端使用代理协议(protocol)传递原始客户端信息,第二遍前端对其进行解码。
将 accept-proxy
添加到第二遍前端的 bind
行,并将 send-proxy
添加到 server
第一遍后端上的行。这样,在 HAProxy 与自身对话的连接上,第一遍后端将发送 Proxy 协议(protocol)前导码,第二遍前端将解码传入值并将其放入 X-Forwarded-For
.
关于ssl - HAProxy - SSL SNI 不便,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42187861/