/ Как да proxy_pass от nGINX към WebSocket сървър (Торнадо)

Как да прокси_паза от nGINX към WebSocket Server (Tornado) - nginx, websocket, push, торнадо

Разработвам уеб услуги на Джанго. Аз се опитвам да използвам PUSH, използвайки WebSocket (ws: //). Досега не съществува поддръжка за ws в nGINX. Много (почти всички) уроци имат решение, използващо Socket.io. Аз не искам да използвам Socket.io coz му не чист WebSocket (както за мен). Просто искам да използвам ws, а не Socket.io (Node.js).

Е, моят преден сървър трябва да бъде nGINX, за да обслужва HTTP Заявки. ws: // Заявките трябва да се предават на Tornado сървър (или друг сървър, ако се поддържа)

Отговори:

1 за отговор № 1

Тук е част от конфигурационния фрагмент на NGINX

map $http_upgrade $connection_upgrade {
default upgrade;
"" close;
}

upstream websocket {
server 192.168.100.10:8010;
}

server {
listen 8020;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}

Повече подробности могат да бъдат намерени в техния блог https://www.nginx.com/blog/websocket-nginx/


0 за отговор № 2

По време на писането Nginx не поддържаше уебшокове - сега се поддържаше в 1.3.13 (февруари 2013)

Проблемът е, че nginx не поддържаwebsockets, тъй като прекратява и препраща данните към услугата надолу по веригата. Вие ще трябва да поставите HAProxy пред сървъра на nginx, за да насочите трафика така, както искате.

Добър пример е тук - HAProxy + изключване на WebSocket - докато те говорят за nodejs като бекенд услуга, всичко е по същество същото.