nginx如何获取请求客户端ipaddress

Posted

技术标签:

【中文标题】nginx如何获取请求客户端ipaddress【英文标题】:nginx how to get the request client ipaddress 【发布时间】:2018-02-02 21:40:55 【问题描述】:

我有 ngnix 代理到 nodejs 服务器。我试图在我的nodejs中读取请求客户端IP地址/主机名,但它总是

::ffff:127.0.0.1

但是在我的nginx访问日志中,可以看到打印了客户端ip地址,不知道为什么我的nodejs服务器获取不到。

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

【问题讨论】:

【参考方案1】:

将以下内容添加到代理 NodeJS 的 nginx 配置节中:

proxy_set_header X-Real-IP $remote_addr;

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

【讨论】:

我已经尝试过,在我的 nodejs 中,它是未定义的。我将用我的 nginx.conf 更新问题 我刚刚发现之间有另一个 ngnix 代理,修复了它 'X-Real-IP'小写req.headers['x-real-ip']显示ip【参考方案2】:

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

在服务器中使用属性“HTTP_X_REAL_IP”

例如在 python 中: request.environ.get('HTTP_X_REAL_IP') (or) request.environ.get('HTTP_X_REAL_IP',request.environ.get('REMOTE_ADDR'))

【讨论】:

以上是关于nginx如何获取请求客户端ipaddress的主要内容,如果未能解决你的问题,请参考以下文章

图解 nginx 如何获取真实的来源 IP

Java面试-如何获取客户端真实IP

经过Nginx代理后如何区分HTTP请求头中的X-Forwarded-For和X-Real-IP,以及Java示例

如何从标准中获取 ipAddress 信息?

nginx如何获取自己的ip

使用Nginx实现负载均衡