我有一个在Nginx后面运行的Express应用程序,所以当我尝试获取用户的IP时,我总是得到127.0.0.1
而不是真实的,这是由X-Real-IP
标头中的Nginx设置的。我如何获得此标题?有没有办法让通过 socket
对象?
代码基本上就是这样:
io.sockets.on( 'connection', function( socket ) {
var ip = /* ??? */;
/* do something with the IP…
… some stuff …
*/
});
答案 0 :(得分:18)
要在NGINX或其他代理后面运行时获取IP:
var ip = req.header('x-forwarded-for') || req.connection.remoteAddress;
或Socket.IO
client.handshake.headers['x-forwarded-for'] || client.handshake.address.address;