我有一个用nodejs编写的小型服务器脚本,我想获得客户端IP,但我似乎还没找到我的方式。
我正在使用Connect包来创建我的服务器。
有没有人知道如何使用nodejs的Connect包来获取ip。
我也在这里查看文档:{{3}}但我找不到,可能是我错过了什么。
答案 0 :(得分:1)
你可能不能直接连接(不是代理),而是自己尝试。我从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']
答案 1 :(得分:0)
我使用以下方法解决了我的问题:
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress ||
req.socket.remoteAddress || req.connection.socket.remoteAddress;
我从这个答案得到了这个:https://stackoverflow.com/a/19524949/1358670