使用Connect Package连接获取客户端IP

时间:2014-03-31 12:44:38

标签: node.js connect clientip

我有一个用nodejs编写的小型服务器脚本,我想获得客户端IP,但我似乎还没找到我的方式。

我正在使用Connect包来创建我的服务器。

有没有人知道如何使用nodejs的Connect包来获取ip。

我也在这里查看文档:{​​{3}}但我找不到,可能是我错过了什么。

2 个答案:

答案 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