【问题标题】:How can I get the correct ip address of the visitor in node.js? (I tried node-ip and it doesn't work)如何在 node.js 中获取访问者的正确 IP 地址? (我试过node-ip但它不起作用)
【发布时间】:2016-02-09 18:43:09
【问题描述】:

我正在使用从这里获取的节点 ip:https://github.com/indutny/node-ip

在我的网络服务中,我做了一件简单的事情:

var ip              = require('ip');

module.exports = function(app) {

app.get('/gps', function (req, res) {

    console.log(ip.address());
}
}

我将它部署到我的 amazon aws 帐户,现在无论谁进入该页面 - 我都会在控制台日志中看到相同的 IP 地址 - 172.31.46.96。我试图检查这个 ip 是什么(可能的选项是它与我的 amazon aws 服务有关?),但 who.is 没有给出答案。

我应该如何更改我的代码以查看每个访问者的 IP 地址?

【问题讨论】:

    标签: node.js


    【解决方案1】:

    您很可能会获得内部负载平衡器/代理的 IP,您需要配置 express 来处理它。

    This is a good place to start.

    【讨论】:

    • 所以我尝试将app.set('trust proxy', 'loopback, 172.31.46.96') 添加到我的server.js 文件中,但它没有帮助,你能给我一些提示我在这里做错了什么吗?
    • app.set('trust proxy'),然后使用 req.ip 而不是使用 node-ip 包会产生所需的输出吗?如果没有,请求标头是否产生任何线索(例如:req.headers['x-forwarded-for'])?
    • 谢谢,我认为它适用于 trust proxyreq.ip!还有一个问题——现在当我在做console.log("coordinates"+req.ip) 时,我得到了coordinates::ffff:188.164.244.110——为什么会有ffff,我怎样才能摆脱它?
    • 根据stackoverflow.com/questions/29411551/…,您将获得一个 IPv6 前缀以及您的 IPv4 地址。如果您想将其映射到 IPv4 地址,此库将有所帮助:github.com/whitequark/ipaddr.js
    【解决方案2】:

    使用req.connection.remoteAddress 获取用户的IP。

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 2012-01-28
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 2010-10-19
      相关资源
      最近更新 更多