Разработвам уеб услуги на Джанго. Аз се опитвам да използвам 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 като бекенд услуга, всичко е по същество същото.