Django Channels无法使用NGINX检测到WebSocket请求

我正在AWS上部署网站。 HTTP和HTTPS一切正常。我正在将所有请求传递给达芙妮。但是,Django将传入的WebSocket连接视为HTTP请求。我猜想Nginx中没有设置一些标头,但是我已经从教程中复制了很多我的Nginx配置。 Nginx配置:

upstream django {
        server 127.0.0.1:9000;
}


server {
        listen 80;

        server_name 18.130.130.126;

        return 301 https://$host$request_uri;
}

server {
        listen 443 ssl;

        server_name 18.130.130.126;

        ssl_certificate /etc/nginx/certificate/certificate.crt;
        ssl_certificate_key /etc/nginx/certificate/private.key;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;


        location / {
                include proxy_params;
                proxy_pass http://django;
        }
}
达芙妮键合至0.0.0.0:9000。频道具有非常基本的设置。如Channels教程所示,先创建一个ProtocolTypeRouter,并带有AuthMiddlewareStack和URLRouter。然后是消费者类。我在通道层上使用Redis,但这似乎不是问题。这是有关提琴手响应请求的一些数据。请求标头显示“升级到WebSocket”,但它返回404 HTTP请求,因为它不将其视为WebSocket请求。

Django Channels无法使用NGINX检测到WebSocket请求

感谢您的帮助。

iCMS 回答:Django Channels无法使用NGINX检测到WebSocket请求

include proxy params是问题所在。是覆盖标题。

本文链接:https://www.f2er.com/1990109.html

大家都在问