我使用这段代码获取Node.js中的ip地址:
const ip = await (req.headers['x-forwarded-for'] || '').split(',').pop().trim() || req.socket.remoteAddress;对于我家里无线网络上的所有设备,当我使用手机上的数据访问我的网站时,我得到的ip地址是::ffff:127.0.0.1
我试图获取访问我的网站的每一个设备(电话,笔记本)的ip地址。但是所有的设备显示相同的ip地址。
如何在Node.js中获取每个设备的独立设备ip地址?
编辑:
我做了一些更新,不再使用get ::ffff:127.0.0.1。我现在得到了互联网连接的ip地址。所以如果我连接到wifi,我就会得到wifi调制解调器ip地址。如果我使用数据,我会得到数据连接ip地址。
,但我需要获取设备ip地址。我不想要连接ip地址。我要设备ip地址.
以下是我所做的改变:
我将“信任代理”设置为真:
app.set('trust proxy', true);我更新了etc/nginx/sites available/mysite文件如下:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:5050;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}我更新了etc/nginx/ to _params文件如下所示:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;我做错什么了?我该怎么解决这个问题?据我所读,听起来我应该能够使用req.Header‘x转发-for’获得正确的ip地址,但是req.Header‘x转发-for’返回与req.Header‘x-real’相同的东西,除非它位于数组中。
发布于 2021-06-09 10:36:00
我为我的用例找到了另一个解决方案。根据一些人的评论,似乎不可能找到连接到您的网站的设备的私有ip地址,只有公共ip地址。
@Cerceis os.networkInterfaces()答案可能有效。我做了一个快速的测试,但无法确定它是否有效。我没有时间对它进行更充分的测试。如果您希望找到答案,我将在Node.js中试用Node.js(),这可能会为您提供您正在寻找的ip地址。
发布于 2021-06-08 07:42:27
发布于 2021-06-09 01:33:35
查找IP地址是Node.js
查找IP地址的最简单方法之一是使用"ip“NPM模块。它是超级快速和容易(而且它曾经为我工作在过去)
const ip = require('ip')
console.log(ip.address())了解更多信息,请访问:https://www.npmjs.com/package/ip
https://stackoverflow.com/questions/67778717
复制相似问题