获取远程IP地址不在节点上工作

时间:2012-05-29 12:39:44

标签: node.js express

我正在尝试使用express从传入连接获取远程IP地址。已经尝试过在网络上找到的常见解决方案:

  1. req.headers ['x-forwarded-for'] / result:always undefined
  2. req.socket.remoteAddress / result:始终获取网关IP(IE:192.168.1.1)而不是外部地址。
  3. 任何线索?

2 个答案:

答案 0 :(得分:0)

您是否通过在自己的计算机上运行虚拟机中的应用来测试此问题?如果是这样,你得到了正确的答案。 X-Forwarded-For是空的,因为没有代理,并且您在主机上看到虚拟接口,VM用于路由出来。这就是请求来自的IP。

答案 1 :(得分:-1)

以下是我在http://th.issh.it/ip

使用的一些代码

也许这是区分大小写的?

exports.iptoy = function(req,res) {
    var clientip = req.socket.remoteAddress;
    var xffip  = req.header('X-Forwarded-For');
    var ip = xffip ? xffip : clientip;
    if(req.params.format == 'json')
        res.send({client:clientip,xforwardedfor:xffip});
    else
        res.send(ip+"\n");
}