我有一个用 nodejs 编写的小型服务器脚本,我想获取客户端 IP,但我似乎还没有找到方法。
我正在使用Connect包来创建我的服务器。
有谁知道如何使用 nodejs 的 Connect 包获取 ip。
我还检查了这里的文档:http ://www.senchalabs.org/connect/但我没有找到它,可能是我错过了一些东西。
当直接连接(不是从代理)时,您可能不能,但请自己尝试。我从 connect-readme 中获取了 hello world 示例,然后打印出请求对象的内容:
var connect = require('connect')
, http = require('http');
, util = require('util');
var app = connect()
.use(function(req, res){
console.log(util.inspect(req));
res.end('Hello from Connect!\n');
});
http.createServer(app).listen(3000);
您不会在这里找到任何客户端 IP。
但无论如何,node.js-services 不应该直接连接,而是使用转发代理、负载均衡器等。
使用 apache 的 proxypass 时,您会在标头中找到客户端的原始 IP 地址,查找
req.headers['X-Forwarded-For']
我使用以下方法解决了我的问题:
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress ||
req.socket.remoteAddress || req.connection.socket.remoteAddress;
我从这个答案中得到了这个:https ://stackoverflow.com/a/19524949/1358670