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 или другая служба прерывает соединение