2012-06-25 4 views
9

에 프록시를 사용하는 동안, 원격 주소를 얻는내 socket.io 코드에서 socket.io

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

IP는 항상 127.0.0.1를 반환하고 서버가 프록시 뒤에 앉아 때문입니다하지 않습니다. 원격 주소를 올바르게 얻으려면 어떻게해야합니까?

편집 : http 프록시를 사용하고 있습니다.

+0

확인하는 경우 client.handshake.headers [ 'X -forwarded-for '] || client.handshake.address.address; 작동합니다. – user644745

답변

22

예, 이것이 저에게 효과적입니다. 내가 제대로 원격 IP 주소 및 버전> 1.0에서하지 127.0.0.1

+3

확인 됨 : 이것은 Google에서 찾은 마지막 10 개의 답변 이후 처음으로 해결 된 솔루션입니다. – DanFromGermany

+0

이것은 나를 위해 작동하지 않았다. 나는 네트워킹 된 서버/프록시를 사용하여 1.3.2를 사용하고있다. – Rachael

+0

이것은 소켓 0.9에서만 작동한다. 버전 1.0 이상은 어떻습니까? –

4

을 얻고있다

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

이 구문은 비슷하다

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