如何使用 express 框架通过 node.js 获取远程客户端的本地 IP 地址?
Posted
技术标签:
【中文标题】如何使用 express 框架通过 node.js 获取远程客户端的本地 IP 地址?【英文标题】:How do i get local ip address of a remote client with node.js using express framework? 【发布时间】: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 网络的入门级读物。 谢谢你,祝福你。
【问题讨论】:
【参考方案1】:我不确定 ngrok 正在运行什么服务器,但你尝试过吗:
var ip = req.headers["x-real-ip"]
【讨论】:
报告为未定义。 是的......我可以看到有人在这里遇到了问题:***.com/questions/37668942/… 我不确定你是否有可能,除非你自己托管,例如使用 nginx,而不是使用隧道以上是关于如何使用 express 框架通过 node.js 获取远程客户端的本地 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章