双代理的Nginx Websocket配置

双代理的Nginx Websocket配置,nginx,websocket,Nginx,Websocket,我试图通过两个nginx代理发出websocket请求。它用于执行SSR(服务器端渲染) 我的堆栈如下所示: 外部世界nginx rendora(SSR)nginx daphne django 当我在做 外部世界nginx daphne django Websocket连接建立得非常好。但当我实现rendora(SSR)并向nginx添加另一个代理时,它就不起作用了。握手时Websocket连接失败。我猜“升级”请求在我的nginx服务器的某个地方失败了。我的nginx配置如下所示: serve

我试图通过两个nginx代理发出websocket请求。它用于执行SSR(服务器端渲染)

我的堆栈如下所示: 外部世界nginx rendora(SSR)nginx daphne django

当我在做 外部世界nginx daphne django

Websocket连接建立得非常好。但当我实现rendora(SSR)并向nginx添加另一个代理时,它就不起作用了。握手时Websocket连接失败。我猜“升级”请求在我的nginx服务器的某个地方失败了。我的nginx配置如下所示:

server {
        listen 8000;

        location / {
                include proxy_params;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
        }
}

server {
        server_name mydomain;
        charset utf-8;

        location /static {
                alias /home/ubuntu/myproject/apps/web-build/static;
        }
        location /      {
                include proxy_params;
                proxy_pass http://127.0.0.1:3001;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }

    listen 443 ssl; # managed by Certbot
   ...
}
因此,位置/端口443将所有来自外部世界的请求发送到rendora(SSR服务器)正在侦听的127.0.0.1:3001。SSR服务器(rendora)将它们转发到127.0.0.1:8000,其中nginx代理连接到daphne unix套接字

除了websocket请求之外,SSR本身运行良好。
但我不知道当请求必须通过两个nginx代理时为什么不进行websocket升级。

我通过将/graphql websocket请求直接发送到Daphne服务器来解决这个问题。当我将websocket连接路由到另一个nginx代理服务器时,我仍然不知道为什么websocket连接不起作用

location /graphql {
                        include proxy_params;
                        proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                    }

location /      {
          include proxy_params;
          proxy_pass http://127.0.0.1:3001;
            }