Я запускаю сервер Django + Channels с помощью Daphne. Сервер Дафна стоит за Nginx. Моя конфигурация Nginx выглядит так, как указано в конце.
Когда я пытаюсь подключиться к ws://example.com/ws/endpoint
, я получаю NOT FOUNT /ws/endpoint
ошибку.
Для меня похоже, что Дафна использует протокол для маршрутизации либо к представлениям Django, либо к приложению каналов. Если он видит http
, он направляется к представлению Django, а когда он видит ws
, он направляется к приложению каналов.
При следующей конфигурации прокси-сервера Nginx URL-адрес всегда имеет префикс протокола http
. Итак, я получаю 404 или НЕ НАЙДЕН в журналах. Если я изменю префикс proxy_pass на ws
, конфигурация Nginx завершится ошибкой.
Каков идеальный способ настройки каналов в этом сценарии?
server {
listen 443 ssl;
server_name example.com
location / {
# prevents 502 bad gateway error
proxy_buffers 8 32k;
proxy_buffer_size 64k;
# redirect all HTTP traffic to localhost:8088;
proxy_pass http://0.0.0.0:8000/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-NginX-Proxy true;
# enables WS support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 999999999;
}
}