Как настроить 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())
]