Node.js 从 HTTP 请求对象获取客户端 IP

6
如何从http请求对象中获取客户端的IP地址?
IE:
   var util = require('util'),
    colors = require('colors'),
    http = require('http'),
    httpProxy = require('../../lib/node-http-proxy');

//
// Http Server with proxyRequest Handler and Latency
//
var proxy = new httpProxy.RoutingProxy();
http.createServer(function (req, res) {
  // GET IP address here
  // var ip = ??
  var buffer = httpProxy.buffer(req);
  setTimeout(function () {
    proxy.proxyRequest(req, res, {
      port: 9000,
      host: 'localhost',
      buffer: buffer
    });
  }, 200);
}).listen(8004);
4个回答

10

应该只是req.connection.remoteAddress


5

通常情况下,获取客户端IP地址的位置是正确的,但并非总是如此。如果您在node.js前面使用Nginx、Apache或其他反向代理,则可能需要从req.headers中获取IP地址。用于存储远程IP地址的标头的常见名称包括“X-Remote-IP”或“X-Originating-IP”,但不同的服务器使用不同的标头名称。


1
代理服务器的事实标准是 X-Forwarded-For。它在大多数缓存代理中默认支持,并且可以在nginx中进行配置:proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - Eric Elliott

0

应该只是req.connection.remoteAddress或req.ip


0
自16.0.0版本起,它是:
req.socket.remoteAddress

返回一个字符串;connection 只是 socket 的别名,现已弃用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接