通过 HTTPS 在 HAProxy 后面的 IIS 服务器上获取客户端 IP 地址

通过 HTTPS 在 HAProxy 后面的 IIS 服务器上获取客户端 IP 地址

我们正在设置两个 IIS 服务器,它们将在运行 HAProxy 的服务器后面进行负载平衡。

所有到这些服务器的流量都将通过 HTTPS 传输。

我们注意到的问题是,所有流量都被记录在 IIS 服务器上,作为来自 HAProxy 服务器 IP 的流量。虽然这在技术上是正确的,但我正在尝试弄清楚如何才能在 IIS 服务器上“看到”原始客户端 IP 地址以进行记录。

我们在 HAProxy 和 IIS 上都设置了 X-Forwarded-For(通过安装F5 的 X-Forwarded-For ISAPI 过滤器),但这似乎只对 HTTP 流量有帮助。HTTPS 仍被记录为来自 HAProxy 服务器。

谢谢你的帮助!

答案1

这是代理的“正常”副作用。您应该在匹配的代理上有相应的日志。

答案2

听起来你有一个正确的 HTTP 解决方案。我会检查 HAProxy 以确保它正确地卸载 SSL。如果它不加任何改动地传递请求,它就没有能力添加 X-Forwarded-For 标头。但是如果你卸载它,那么它应该将 HAProxy 的请求作为 HTTP 发送(确保它是一个受信任的交换网络)。然后它可以添加必要的 HTTP 标头,包括一些 SSL HTTP 标头。

答案3

针对 Scott 的说明(抱歉,我暂时无法评论),HAProxy 在卸载 SSL 后能否重新加密连接?我们使用 ARR,卸载后将原始客户端 IP 放入 X-Forwarded-For 中,然后再次将其作为 SSL 发送。然后,我们使用 ARR Helper 工具将 X-Forwarded-For 放回客户端 IP,以便它能够很好地显示在日志中。

因此,基本上,我们对客户端和 Web 服务器之间的整个连接都进行了 SSL 保护,只是在通过 ARR 时进行解密、插入客户端 IP 和加密。那么问题是,HAProxy 能做同样的事情吗?

相关内容