Как прокси и WSGI и ASGI через Uvicorn или Daphne с прокси nginx и SSL? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть небольшой проект, который использует Django Каналы (websockets), и он прекрасно работает локально. Я добавил SSL к своему развертыванию на основе docker с образом letsencrypt-companion-container docker, который, выставляя 443, обрабатывает весь SSL, затем направляет запросы / ответы через порт 80 в мой адаптер A / WSGI (uvicorn или daphne).

Когда по SSL мой клиентский код получает эту ошибку в консоли JS:

`WebSocket connection to 'wss://my_server.com/ws/echo/' failed: Error during WebSocket handshake: Unexpected response code: 404`

Мне не понятно почему. Как мне сделать эту работу?

Вот мой nginx .conf, если это поможет:

upstream wsgi {
    server web:8000;
}

upstream asgi {
    server web:8000;
}

server {
    listen 0.0.0.0:80;

    location / {
        proxy_pass http://wsgi;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /ws {
        proxy_pass ​http://asgi;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }

    location /staticfiles/ {
        alias /home/app/web/staticfiles/;
    }
}
...