【发布时间】:2019-09-16 10:47:01
【问题描述】:
我正在尝试将我的反向 nginx 代理配置为发送客户端的真实 IP 地址而不是代理本身。
我正在尝试按照我看到的许多帖子中的建议实施,但它没有按预期工作。
下面是nginx.conf的相关部分
http {
set_real_ip_from 123.0.0.0/8;
set_real_ip_from 123.123.12.22; -- example ip
real_ip_header X-Forwarded-For;
real_ip_recursive on;
server {
location @app {
proxy_pass http://127.0.0.1:3000;
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_set_header X-Forwarded-Proto $http_x_forwarded_proto;
}
}
据我了解,我们在set_real_ip_from 中设置的 ip 是受信任的 ip,HTTP_X_FORWARDED_FOR 将指向第一个或最后一个不受信任的 ip。但那没有发生。
当我尝试打印request.env['HTTP_X_FORWARDED_FOR'] 时,仍然看到123.123.12.22 和request.remote_ip 仍然指向代理地址123.123.12.22
在这方面的任何帮助都会很棒。谢谢。
【问题讨论】:
-
123.123.12.22是客户端的地址,还是另一个 Web 服务器重定向到该地址并将X-Forwarded-For设置为真实的客户端 IP? -
我使用的示例 ip
123.123.12.22是代理服务器 ip,这是 IP,我进入的是我的 rails 应用程序而不是客户端 IP
标签: nginx ruby-on-rails-5 nginx-reverse-proxy