在我的 python 应用程序中,浏览器向我的服务器发送请求以获取某些信息。我需要跟踪发出请求的源的 IP。通常,我可以通过此调用获取该信息:
request.headers.get('Remote-Addr')
但是,当我在 HaProxy 这样的负载均衡器后面部署应用程序时,给出的 IP 是负载均衡器的 IP,而不是浏览器的 IP。
当服务器位于负载均衡器后面时,如何获取服务器上浏览器的 IP?
我的案例的另一个问题是我通过 HAProxy 使用从浏览器到我的服务器的 TCP 连接,而不是使用 http。
我在使用 AWS ELB 和 Apache 时遇到了这个问题。解决方案是 mod_rpaf,它读取 X-Forwarded-For 标头并将其替换为标准 ip 标头。
您应该检查 haproxy 是否设置了 X-Forwarded-For 标头(其中包含真实的客户端 IP)。您可以使用 modrpaf 或其他技术来读取真实 IP。