我的环境具有通过多个系统的用户请求:
[客户端] – > [ELB] —> [nginx] – > [网页]
(ELB = AWS Elastic Load Balancer)
感谢这个答案 ,我有nginx确定并通过X-Forwarded-For和X-Real_IP头将正确的客户端IP地址传递给上游服务器(web)。 相关的nginxconfiguration:
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中的真实IP模块用其X-Forwarded-For计算结果replace现有的$remote_addrvariables。 这给了我最初的客户端IP,但是我正在丢失实际发送请求到代理(即ELB)的系统的IP地址。
总的来说,拥有客户端IP对我来说更为重要,但是我希望能够logging完整的请求链,以便我能够理解(并debugging)stream量是如何stream动的。 目前,我只能有nginxlogin客户端IP,自己的IP,以及上游服务器IP。 我希望能够loginELB IP。
我看到X-Istence在2013年问了同样的问题 ,运气不多。 从那以后有什么改变或改进?
您可以在variables$realip_remote_addr中获得连接ELB的原始客户端地址,但请注意,此variables仅添加到nginx 1.9.7中,因此您需要运行最新版本的nginx。