通过Nginx在Socketio中终止SSL

通过Nginx在Socketio中终止SSL,nginx,flask,websocket,socket.io,Nginx,Flask,Websocket,Socket.io,我有一个应用程序需要一个windows box来运行flask服务器。这将通过端口5000发送到nginx linux box。Nginx安装了certbot并处理SSL。它将在Linux机器上终止。请求似乎通过/和/static端点解决;但是,套接字io端点返回“HTTP”协议上的“混合协议”错误 在这一点上,我尝试了很多不同的方法来解决这个问题。我认为必须在nginx上设置头,将其转发到flask,然后将这些头一起传递回。听起来对吗?因此,我在nginx配置文件和ProxyFix上尝试了头文

我有一个应用程序需要一个windows box来运行flask服务器。这将通过端口5000发送到nginx linux box。Nginx安装了certbot并处理SSL。它将在Linux机器上终止。请求似乎通过
/
/static
端点解决;但是,
套接字io
端点返回“HTTP”协议上的“混合协议”错误

在这一点上,我尝试了很多不同的方法来解决这个问题。我认为必须在nginx上设置头,将其转发到flask,然后将这些头一起传递回。听起来对吗?因此,我在nginx配置文件和ProxyFix上尝试了头文件的组合。什么都不管用。我尝试了至少几十种变体,但都没有成功。我错过了什么

我的nginx位置块如下所示:

        location /socket.io/ {
                proxy_pass              http://flask_app/socket.io;
                proxy_http_version 1.1;
#        proxy_redirect off;
#        proxy_buffering off;

                proxy_set_header        Host                    $host;
                proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto       https;
                proxy_set_header        X-Forwarded-Port        443;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_redirect http://$host/ https://$host/;
    }

我在应用程序中使用这一行:
app.wsgi\u app=ProxyFix(app.wsgi\u app,x\u proto=1,x\u port=1)