我不完全理解如何获取远程用户的IP地址。
假设我有一个简单的请求路由,如下所示:
app.get(/, function (req, res){
var forwardedIpsStr = req.header('x-forwarded-for');
var IP = '';
if (forwardedIpsStr) {
IP = forwardedIps = forwardedIpsStr.split(',')[0];
}
});
上面的方法是正确的,还是有更好的方法来获取真实的用户IP地址?那么代理又如何呢?
发布于 2012-06-01 19:53:33
如果您运行在诸如NGiNX之类的代理或其他代理之后,那么只有这样才应该检查'x-forwarded-for'
var ip = req.headers['x-forwarded-for'] || req.socket.remoteAddress
如果代理不是“您的”,我不会信任'x-forwarded-for'
头,因为它可能被欺骗。
发布于 2019-05-10 06:42:15
这只是this answer的附加信息。
如果您使用的是nginx
,您可以将proxy_set_header X-Real-IP $remote_addr;
添加到站点的位置块中。例如,/etc/nginx/sites-available/www.example.com
。这是一个服务器块示例。
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.1.1:3080;
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;
}
}
重新启动nginx
后,您将能够使用req.headers['x-real-ip'] || req.connection.remoteAddress;
访问node
/express
应用程序路由中的ip
发布于 2018-11-21 19:00:41
我为此写了一个包。您可以将其用作express中间件。我的包发布在这里:https://www.npmjs.com/package/express-ip
您可以使用以下命令安装该模块
npm i express-ip
用法
const express = require('express');
const app = express();
const expressip = require('express-ip');
app.use(expressip().getIpInfoMiddleware);
app.get('/', function (req, res) {
console.log(req.ipInfo);
});
https://stackoverflow.com/questions/10849687
复制相似问题