2014-12-04 6 views
0

На моем развивающей Macchine у ​​меня есть Nginx в качестве прокси-сервера для WebSocket с этой конфигурацией:Nginx в качестве прокси-сервера для sockio.io WebSocket не работает на удаленном

server { 
    listen  80; 

    location /socket.io { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-NginX-Proxy true; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_http_version 1.1; 

    proxy_set_header Host $host; 
    proxy_pass http://127.0.0.1:3001; 
    proxy_redirect off; 
    } 

    location/{ 
    proxy_pass http://trunk.alban:81; 
    client_max_body_size 500M; 

    } 
} 

Когда я получить доступ из одной и той же Macchine через светлячок в WebSockets подключается правильно и начать обмениваться сообщениями:

[[email protected] nodejs]# node websocket.js 

2014-12-04 10:27:16 ==> Listening on port: 3001 
2014-12-04 10:27:16 ==> Auth token: alyt4qxs9k9k95a7q1if6r3a8b7yzaor 
2014-12-04 10:27:29 ==> Client authorized: alyt4qxs9k9k95a7q1if6r3a8b7yzaor == alyt4qxs9k9k95a7q1if6r3a8b7yzaor 
2014-12-04 10:27:29 ==> IP: [127.0.0.1], URL:[http://trunk.alban], Agent: [Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0] 
2014-12-04 10:27:35 ==> Broadcasting clients: amend-view-status_13 {} 

но когда я Accesss из другого Macchine, он подключается, но не отправки/получения любого сообщения, только петли переключения протоколов, подключение и disconneting:

2014-12-04 10:32:23 ==> Client authorized: alyt4qxs9k9k95a7q1if6r3a8b7yzaor == alyt4qxs9k9k95a7q1if6r3a8b7yzaor 
2014-12-04 10:32:23 ==> IP: [127.0.0.1], URL:[http://192.168.57.130], Agent: [Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0] 
2014-12-04 10:32:43 ==> Client Disconnected 
2014-12-04 10:32:44 ==> Client authorized: alyt4qxs9k9k95a7q1if6r3a8b7yzaor == alyt4qxs9k9k95a7q1if6r3a8b7yzaor 
2014-12-04 10:32:44 ==> IP: [127.0.0.1], URL:[http://192.168.57.130], Agent: [Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0] 
2014-12-04 10:33:04 ==> Client Disconnected 
2014-12-04 10:33:06 ==> Client authorized: alyt4qxs9k9k95a7q1if6r3a8b7yzaor == alyt4qxs9k9k95a7q1if6r3a8b7yzaor 
2014-12-04 10:33:06 ==> IP: [127.0.0.1], URL:[http://192.168.57.130], Agent: [Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0] 

У меня установлен nginx 1.6.2 и socket.io 1.2.1.

Я отключил все возможные брандмауэры.

ПРИМЕЧАНИЕ: Если я удалю nginx как прокси-сервер, просто поместив его на сервер socket.io, он будет работать нормально в любом macchine.

NOTE2: принудительное использование опроса без проблем. Кажется, проблема с протоколом nginx/ws ...

Любые идеи?

ответ

0

ОК Я нашел проблему: На стороне клиента я установил опцию транспортов:

this.socket = io.connect(this.adress, {query: 'token='+this.token /* , resource: 'ws/socket.io' */, transports:['websocket', 'polling']}); 

Удалив его:

this.socket = io.connect(this.adress, {query: 'token='+this.token}); 

РАБОТЫ, с любого удаленного подключения !!! Я не могу объяснить, почему, но это работает.

Надеюсь, это поможет любому другому пользователю