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

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

我想要正确设置位于 amazon ELB 后面的 nginx 代理域的 X-Real-IP。

IE

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;

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

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

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

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

proxy_pass_request_headers 开启;

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

我估计我需要一条proxy_set_header带有 X-Real-IP 的线路。但我如何引用 real-ip 模块设置的 real-ip 标头?

答案1

我找到了答案。

我一直试图设置在网上找到的以下指令。但似乎不起作用。

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;
}

相关内容