1

我有一个使用 Django Channels (websockets) 的小项目,它在本地运行良好。我已经使用letsencrypt-companion-containerdocker 映像将 SSL 添加到基于 docker 的部署中,该映像公开 443,处理所有 SSL,然后将请求/响应 vi 端口 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/;
    }
}
4

0 回答 0