如何在node.js express中获取IP地址

4

如何从node.js获取IP地址,我尝试了很多方法,但它不起作用并返回::ffff:127.0.0.1,请给我一些建议。

这是我的代码:

app.put('/update-user-info', function(req, res){
  // it's doesn't work and return ::ffff:127.0.0.1
  var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress ||  req.socket.remoteAddress || req.connection.socket.remoteAddress; 
});

使用 req.ip。如果您在代理后面,请参考:http://expressjs.com/en/guide/behind-proxies.html - Roland Starke
2个回答

10

你尝试过使用req.ip吗?

req.ip

包含请求的远程IP地址。

当信任代理设置不为false时,此属性的值来自X-Forwarded-For头中最左边的条目。该头可以由客户端或代理设置。

req.ip和req.ips的值是从X-Forwarded-For中的地址列表中填充的。

请参见Express 4.x API(关于req.ip)

如果您使用代理,需要特殊的应用程序设置称为trust_proxy(默认为false)

注意:X-Forwarded-*头很容易被欺骗,检测到的IP地址不可靠。

有关更多信息,请参见“信任代理”设置选项Express代理后面


4

正如GuroKing所说,我将再添加一点内容。

-添加app.set('trust proxy', true)

在nginx.conf文件中:

proxy_set_header  X-Real-IP  $remote_addr;

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