Я использую сервер Django + Channels, используя Daphne. Дафна сервер находится за Nginx. Мой конфиг Nginx выглядит так, как указано в конце.
Когда я пытаюсь подключиться к ws://example.com/ws/endpoint
, я получаю NOT FOUNT /ws/endpoint
ошибку.
Для меня похоже, что Дафни использует протокол для маршрутизации либо в представления Django, либо в приложение Channels. Если он видит http
, он направляется в представление Django, а когда он видит ws
, он направляется в приложение Channels.
При следующей конфигурации прохода прокси 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;
}
}