2013-06-25 131 views
3

如何從http req對象獲取客戶端IP地址?node.js從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); 

回答

7

這應該只是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;' –

相關問題