使用 Real-IP 时如何记录 $remote_addr 的原始值

使用 Real-IP 时如何记录 $remote_addr 的原始值

我的环境中有用户请求经过多个系统:

[客户端] --> [ELB] ---> [nginx] --> [web]

(ELB = AWS 弹性负载均衡器)

得益于此回答X-Forwarded-For,我让 nginx 确定正确的客户端 IP 地址,并使用和标头将正确的客户端 IP 地址传递给上游服务器 (web) X-Real_IP。相关的 nginx 配置:

    real_ip_header      X-Forwarded-For;
    set_real_ip_from        10.0.0.0/8;
    real_ip_recursive   on;
    proxy_set_header X-Real-IP $remote_addr;

我的问题是这个,nginx 中的 Real IP 模块取代现有$remote_addr变量及其计算结果X-Forwarded-For。这给了我原始客户端 IP,但我丢失了实际向代理发送请求的系统的 IP 地址(即 ELB)。

总体而言,拥有客户端 IP 对我来说更重要,但我希望能够记录完整的请求链,以便了解(和调试)流量的流动方式。目前,我只能让 nginx 记录客户端 IP、其自己的 IP 和上游服务器 IP。我还希望能够记录 ELB IP。

我懂了X-Istence问了同样的事情问题2013 年,运气不佳。自那时以来,有什么变化或改善吗?

答案1

您可以在以下位置获取连接 ELB 的原始客户端地址变量$realip_remote_addr,但请注意,此变量仅在 nginx 1.9.7 中添加,因此您需要运行最新版本的 nginx。

相关内容