Tengo un pequeño proyecto que usa Django Channels (websockets) y funciona bien localmente. Agregué SSL a mi implementación basada en la ventana acoplable con la imagen de la ventana acoplable letsencrypt-companion-container
, que expone 443, maneja todo el SSL, luego canaliza las solicitudes/respuestas del puerto 80 a mi adaptador A/WSGI (uvicorn o daphne) .
Cuando estoy bajo SSL, mi código de cliente recibe este error en la consola JS:
`WebSocket connection to 'wss://my_server.com/ws/echo/' failed: Error during WebSocket handshake: Unexpected response code: 404`
No me queda claro por qué. ¿Cómo hago que esto funcione?
Aquí está mi nginx.conf, si ayuda:
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/; } }
Estaba enfrentando un problema similar, recibí un error 403 en mi servidor django. Después de verificar esto y configurar mi ALLOWED_HOSTS = "*"
, el servidor funcionó.
Siendo honesto, no me parece una mejor práctica, pero si bien encuentro algo mejor, es una forma de tener el servidor en funcionamiento.
Asegúrese también de incluir esta configuración en su nginx