【问题标题】:How do i get local ip address of a remote client with node.js using express framework?如何使用 express 框架通过 node.js 获取远程客户端的本地 IP 地址?
【发布时间】:2018-12-07 10:49:02
【问题描述】:

我刚刚遇到了一个任务,我需要获取正在访问我们服务器上的 REST api 的远程客户端的本地 IP 地址,我没有使用任何负载均衡器(因为我现在对此一无所知),我的应用程序在我的电脑上本地运行,我使用工具 ngrok 将其暴露在互联网上,该工具托管我的应用程序并使其可以访问互联网。我将与您分享我到目前为止所做的事情,但这并不能满足我的需要,因为它只获取远程客户端的公共 IP 地址,这意味着,如果两个不同的用户从同一网络访问 API,则使用此代码,他们的 ip 地址报告相同,

RedisRouter.post('/incrementvisit', async (req: Request, res: Response, next: NextFunction) => {
try {
    console.log('req.ip', req.ip);
    console.log('request.connection.remoteAddress==================================', req.connection.remoteAddress);
    var ip = req.headers['x-forwarded-for'];
    console.log('ip from headers -------------->', ip);

    console.log('api after trimming', ip);
    res.send(await rs.visitCounter(req.body.name,ip));
} catch (error) {
    console.log(error);
    next(error);
}
});

`对于从同一网络请求 api 的所有用户,这总是给我相同的 ip 地址,这是他们的公共 IP 地址,而不是本地地址。基本上,我的需要是跟踪 ping 我们的 API 的不同用户的数量,并且我不能将相同的 IP 地址作为两个不同的人从同一网络请求 API。

另外,请向我推荐一些关于为开发人员使用 Web 代理和 Web 网络的入门级读物。 谢谢你,祝福你。

【问题讨论】:

    标签: node.js express redis


    【解决方案1】:

    我不确定 ngrok 正在运行什么服务器,但你尝试过吗:

    var ip = req.headers["x-real-ip"]
    

    【讨论】:

    • 报告为未定义。
    • 是的......我可以看到有人在这里遇到了问题:stackoverflow.com/questions/37668942/… 我不确定你是否有可能,除非你自己托管,例如使用 nginx,而不是使用隧道
    猜你喜欢
    • 2015-10-03
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 2019-02-04
    • 2014-05-14
    • 2012-03-14
    • 2012-02-16
    • 2011-01-30
    相关资源
    最近更新 更多