我不完全理解如何获取远程用户的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
复制相似问题