Websocket 502 Bad Gateway

У меня есть два контейнера wsgi и asgi.

wsgi сервер работает на 127.0.0.8000:

gunicorn app.wsgi:application --bind 127.0.0.1:8000

Также asgi сервер работает на 127.0.0.1:8001, используя daphne:

daphne -b 127.0.0.1 -p 8001 app.asgi:application

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

wss://app.example.com/ws/chat/f770eef/

Но, к сожалению, в системе возникают такие ошибки:

i) nginx log says:

2022/05/22 13:15:29 [error] 463129#463129: *9 upstream преждевременно закрыл соединение при чтении заголовка ответа от upstream, клиент: 11.198.111.11, сервер: app.example.com, запрос: "GET /ws/chat/f770eef/

".

ii) Запросы не достигают daphne.


asgi.py

import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings')
application = get_asgi_application()

nginx cofing:

server {
listen 443;
listen [::]:443;
server_name app.example.com;
root /var/www/html;
...
location /ws/ {
    proxy_pass http://127.0.0.1:8001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_read_timeout 300s;
    proxy_connect_timeout 75s;
  }  
  ...
}

У меня была такая же проблема с моей установкой. Изменение параметра proxy_pass на HTTPS вместо http устранило проблему.

...
    proxy_pass https://127.0.0.1:8001;
...

Поскольку вы используете WSS, это WS по протоколу SSL, поэтому HTTP не подходит, и я полагаю, что Nginx или другая служба прерывает соединение

Вернуться на верх