Nginx set_real_ip_from AWS ELB负载均衡器地址

我在Amazon ELB负载均衡器后面有一组Nginx服务器.我正在使用set_real_ip(来自HttpRealIpModule),以便我可以访问这些服务器上的原始客户端IP地址(用于传递到php-fpm并在HttpGeoIPModule中使用).

似乎nginx配置中的set_real_ip_from只能接受IP地址.然而,关于ELB机器亚马逊说:

Note: Because the set of IP addresses associated with a LoadBalancer can change over time, you should never create an “A” record with any specific IP address. If you want to use a friendly DNS name for your LoadBalancer instead of the name generated by the Elastic Load Balancing service, you should create a CNAME record for the LoadBalancer DNS name, or use Amazon Route 53 to create a hosted zone. For more information, see the Using Domain Names With Elastic Load Balancing

但如果我需要输入IP地址,我就不能使用CNAME(亚马逊或我自己的).这个问题有解决方案吗?

最佳答案
如果您可以保证所有请求都来自ELB(我不熟悉它),您可以尝试:

real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;

这应该告诉nginx信任来自任何人的X-Forwarded-For标头.缺点是,如果有人直接访问您的服务器,他们将能够欺骗X-Forwarded-For标头,而nginx将使用错误的客户端IP地址.

转载注明原文:Nginx set_real_ip_from AWS ELB负载均衡器地址 - 代码日志