在socket.io中使用代理时没有获取远程地址

时间:2012-06-25 02:53:07

标签: node.js proxy socket.io

在我的socket.io代码中,

socket.sockets.on('connection', function(client){ 
    var ip = client.handshake.address.address;
    ..
}

ip始终返回127.0.0.1,这是因为服务器位于代理后面。 如何正确获取远程地址?

编辑:我正在使用http-proxy

3 个答案:

答案 0 :(得分:24)

是的,这对我有用。

client.handshake.headers['x-forwarded-for'] || client.handshake.address.address;

我正在获取远程IP地址而不是127.0.0.1

答案 1 :(得分:6)

在版本> 1.0,语法类似:

socket.handshake.headers['x-forwarded-for'] || socket.request.connection.remoteAddress;

答案 2 :(得分:0)

对于使用NGINX可能来自Google的人:这些都不适合我,我遵循了答案in this other question并修改了proxy_pass,以创建节点可以使用的新标头。不要忘记之后再致电sudo systemctl restart nginx