通过Nginx在Socketio中终止SSL
我有一个应用程序需要一个windows box来运行flask服务器。这将通过端口5000发送到nginx linux box。Nginx安装了certbot并处理SSL。它将在Linux机器上终止。请求似乎通过通过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上尝试了头文
/
和/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)