Nginx如何获取请求客户端的IP地址

11

我正在使用nginx代理到一个nodejs服务器,我尝试在我的nodejs中读取请求客户端的IP地址/主机名,但它总是

I have ngnix代理到一个nodejs服务器。我正在尝试在我的nodejs中读取请求客户端的IP地址/主机名,但它始终如此。

::ffff:127.0.0.1

但是在我的nginx访问日志中,我可以看到客户端的IP地址打印出来,不确定为什么我的nodejs服务器无法获取它。

x.x.x.x - - [24/Aug/2017:14:28:01 -0700] "GET ...."
2个回答

22
将以下内容添加到代理到NodeJS的Nginx配置块中:

proxy_set_header X-Real-IP $remote_addr;

现在你可以在NodeJS中读取标题“X-Real-IP”。

我已经尝试过了,在我的nodejs中,它是未定义的。我将更新问题并附上我的nginx.conf。 - PMat
1
我刚发现还有另一个nginx代理在中间,这解决了问题。 - PMat
"x-real-ip"小写的req.headers['x-real-ip']显示IP地址。 - Aswin Sekar
谢谢,Akber。无论如何,对于Flask来说,它是flask.request.headers.get('X-Real-IP')。 - Malcolm Who

4

在代理请求的位置块中使用 proxy_set_header X-Real-IP $remote_addr; 作为设置。

在服务器中使用属性 "HTTP_X_REAL_IP"。

例如在 Python 中: request.environ.get('HTTP_X_REAL_IP') (或) request.environ.get('HTTP_X_REAL_IP',request.environ.get('REMOTE_ADDR'))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接