我在使用nginx和node时遇到了问题,因为当我想使用node获取用户IP地址时,在我的本地主机上可以正常工作(没有使用nginx),但是在服务器上不像应该那样工作。我进行了研究,并发现node并不是第一个接收IP地址的,而是nginx先接收请求,然后将请求发送给node。因此,node接收到的IP地址是我的服务器IP地址,而不是用户的IP地址。请查看nginx的配置:
location / {
proxy_pass https://fotogena.co:8000; <-nginx send req to node
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_connect_timeout 1000;
proxy_send_timeout 1500;
proxy_read_timeout 2000;
}
我使用 "req.connection.remoteAddress" 来获取用户的 IP 地址,但控制台显示的是我的服务器 IP。有人知道如何解决这个问题吗?
谢谢 :D
-----------2016-04-20--------
我通过在 Nginx 文件设置中添加以下行来解决了这个问题。
proxy_set_header X-Real-IP $remote_addr;
和 node.js
->and node.js
req.headers['x-forwarded-for']
req.ip
是什么? - Bwaxxlo