@Bilyalov
Программист

Как заставить Nginx видеть Websocket?

Есть сервер Ubuntu 16 на котором висит Django вместе с модулем Django Channels (вебсокеты). Поставил gunicorn и nginx. Всё вроде сделал кроме websocket. Выходят ошибки 404, 502, Error in connection establishment: net::ERR_CONNECTION_REFUSED при соединении
Вот nginx.conf:
http {
        map $http_upgrade $connection_upgrade {
                default upgrade;
                ''      close;
        }

        server {
                listen 3000;

                root /home/azureuser/myapp/;

                location = /favicon.ico { access_log off; log_not_found off; }

                location /static/ {
                        autoindex on;
                }

                location / {
                        include proxy_params;
                        proxy_pass http://unix:/home/azureuser/myapp/myapp.sock;
                }

                location /api/chat/connect {
                        proxy_pass http://localhost:8000/;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection $connection_upgrade;
                }
        }

Пробовал разные статьи:
nginx.org/ru/docs/http/websocket.html
https://habrahabr.ru/post/171757/

И + еще около 8 статей. Каждую прям вставлял, своё подправлял. В основном ошибка связанная с отказом соединения. Сервер висит на ms azure.
Порты открыты: 8000, 8080, 80, 3000
------
Я пробовал проксировать два .sock, один myapp.sock второй ws.sock, не помогает
  • Вопрос задан
  • 1605 просмотров
Пригласить эксперта
Ответы на вопрос 1
Bobsans
@Bobsans
Full-Stack Developer
Недавно возникла аналогичная проблема. Решение было не очевидное. Подключил выделенный IP на VPS и все заработало.

Посмотрите отправляет ли сервер в ответе на подключение к сокету заголовки Upgrade: WebSocket и Connection: Upgrade.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы