nginx将X-Real-IP设置为下游代理服务器以防止欺骗

我想要正确设置由nginx代理的域的X-Real-IP,它也位于亚马逊ELB之后。

AMAZON ELB <=> NGINX PROXY <=> REST APP1 <=> REST APP2 

到目前为止,我发现以下正确的工作,并防止欺骗的IP。 我在nginx.conf中有全局的这个集合

 real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; 

不过,我也有一些REST应用程序位于NGINX之后

我的其他应用程序将使用x-real-ip(如果已设置)或x-forwarded-for。 在正常使用情况下,真实的客户端IP是正确的。

在伪造的IP攻击中,设置了x-real-ip和x-forwarded-for头中的一个或两个,我在REST客户端中看到伪造的IP。 但是,nginx显示正确的客户端IP。

目前在域名主机,我已经设置

proxy_pass_request_headers on;

如何将x-real-ip设置为REST应用程序的真正可信IP?

我认为我需要一个proxy_set_header线与X-Real-IP。 但是,我怎样才能引用real-ip模块设置的真实IP头?

我find了答案。

我一直试图设置我在网上find的以下指令。 但似乎没有工作。

 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

经过一些搞乱我想我会尝试把它们放在一个位置块。 我曾尝试把它们放在HTML部分和服务器部分。 不过,如果你把上面的位置块放在下面,它将会起作用。 例如

 location / { proxy_pass http://localhost:1234; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass_request_headers on; }