Как настроить daphne с nginx с каналами djnago для websockets

Мне нужно настроить сервер Django с WebSockets и HTTP запросами. Он отлично работает в моей локальной системе, а также на сервере без SSL, но когда мы используем SSL на сервере, HTTP запрос работает нормально на https, но WebSocket не работает с wss

Я использую Nginx для веб-сервера и daphne.

это мой файл Nginx conf

server {
    listen 80;
    server_name domain.name;

    error_log  /var/log/nginx/error.log;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        autoindex on;
        alias /root/myprojectdir/staff_hiring/static;
    }

        location /media/ {
        autoindex on;
        alias /root/myprojectdir/staff_hiring/media;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

и это мой файл asgi

import os

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
import staff_admin.routing
from channels.security.websocket import AllowedHostsOriginValidator
import django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'staff_hiring.settings')

django.setup()
application = ProtocolTypeRouter({
    "https": get_asgi_application(),
    'websocket':AllowedHostsOriginValidator(
        AuthMiddlewareStack(
            URLRouter(
          staff_admin.routing.websocket_urlpatterns
    ) 
        )
    )
})

и файл маршрутизации

websocket_urlpatterns = [
  re_path(r'ws/chat/(?P<room_name>\w+)/$', consumers.ChatConsumer.as_asgi()), # Using asgi
  # url(r'/ws/chat/', consumers.ChatConsumer.as_asgi())

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