0

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

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

有谁知道如何使用 nodejs 的 Connect 包获取 ip。

我还检查了这里的文档:http ://www.senchalabs.org/connect/但我没有找到它,可能是我错过了一些东西。

4

2 回答 2

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']
于 2014-03-31T15:42:06.340 回答
0

我使用以下方法解决了我的问题:

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || 
    req.socket.remoteAddress || req.connection.socket.remoteAddress;

我从这个答案中得到了这个:https ://stackoverflow.com/a/19524949/1358670

于 2014-04-02T14:53:32.700 回答