Я пытаюсь развернуть django-каналы на производстве, используя Gunicorn, Nginx, Postgres и Supervisor. Хотя я смог правильно обслуживать http-запросы, но не могу настроить конфигурацию websocket
Вот конфигурация nginx
upstream app_server {server unix:/home/datasleek/tracker/run/gunicorn.sock fail_timeout=0;}
upstream websocket {server ip-address:80;}
server
{
listen 80;
server_name ip-address;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ { alias /home/datasleek/tracker/staticfiles/; }
location /media/ { alias /home/datasleek/tracker/media/; }
client_max_body_size 4G;
access_log /home/datasleek/tracker/logs/nginx-access.log;
error_log /home/datasleek/tracker/logs/nginx-error.log;
location /ws/ {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://app_server;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
Это конфигурация супервизора
[program:tracker]
command=/home/datasleek/trackervenv/bin/gunicorn_start
user=datasleek
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/datasleek/tracker/logs/gunicorn.log
[program:serverinterface]
directory=/home/datasleek/tracker/
command= /home/datasleek/trackervenv/bin/daphne -b 0.0.0.0 -p 80 tracker.asgi:channel_layer
autostart=true
autorestart=true
stopasgroup=true
user=datasleek
stdout_logfile = /home/datasleek/tracker/logs/daphne.log
redirect_stderr=true
#[program:tracker_asgi_daphne]
#directory=/home/datasleek/tracker/
#command=/home/datasleek/trackervenv/bin/daphne -u /home/datasleek/tracker/daphne.sock --root-path= home/datasleek/tracker tracker.asgi:channel_layer
#stdout_logfile = /home/datasleek/tracker/logs/daphne.log
[program:tracker_asgi_workers]
command=/home/datasleek/trackervenv/bin/python /home/datasleek/tracker/manage.py runworker
stdout_logfile = home/datasleek/tracker/logs/worker.log
process_name=asgi_worker%(process_num)s
numprocs=3
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8 ; Set UTF-8 as default encoding
autostart=true
autorestart=true
redirect_stderr=True
stopasgroup=true
Это некоторые пути веб-сокетов, к которым я пытаюсь подключиться
ws://ip-address/agent-presence/
ws://ip-address/stream/
И я получаю следующую ошибку;
websocketbridge.js: 118 Сбой подключения WebSocket к 'ws: // ip-address / agent -sence /': Ошибка при рукопожатии WebSocket: Неожиданный код ответа: 404
PS: я знаю, что вопросы об этой ошибке задавались несколько раз, но я действительно беспомощен, чтобы выйти из этой проблемы.Я пытался с прошлой недели, но не смог решить эту проблему, несмотря на применение различных методов из Google и YouTube.