尝试将 flask-socket 与 uwsgi 和 nginx 一起使用时经常出现 400 Bad Request 错误
getting 400 Bad Request error frequently when trying to use flask-socket with uwsgi and nginx
我有一个 Flask 应用 运行 Flask-SocketIO 在端口 5000 上。
我在生产服务器上使用 uwsgi 运行 这个应用程序。
这是我的应用程序 uwsgi .ini 文件:
[uwsgi]
module = server.webserver:app
callable = app
master = true
processes = 5
http-socket = 0.0.0.0:5000
die-on-term = true
plugin = python35
#chdir = /var/xyz/webapp
wsgi-file = /var/xyz/webapp/server/webserver.py
virtualenv = /opt/venv3
#home = /opt/venv3/bin
gevent = 1000
enable-threads = true
我正在使用 nginx 作为此应用程序的反向代理,我的 nginx 服务器块是:
server {
#listen 80 default_server;
#listen [::]:80 default_server;
client_body_timeout 15s;
client_header_timeout 15s;
server_name x.y.z;
root /var/xyz/webapp;
index index.html index.htm index.nginx-debian.html;
location /{
proxy_pass http://127.0.0.1:5000;
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;
}
location /socket.io {
include proxy_params;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://localhost:5000/socket.io;
}
}
现在每次客户端尝试连接到套接字时,请求都会频繁收到 400 Bad Request Error。但是如果我从我的 uwsgi .ini 文件中评论这些行:
#master = true
#processes = 5
套接字已连接,运行正常。
我有一个 Flask 应用 运行 Flask-SocketIO 在端口 5000 上。
我在生产服务器上使用 uwsgi 运行 这个应用程序。
这是我的应用程序 uwsgi .ini 文件:
[uwsgi]
module = server.webserver:app
callable = app
master = true
processes = 5
http-socket = 0.0.0.0:5000
die-on-term = true
plugin = python35
#chdir = /var/xyz/webapp
wsgi-file = /var/xyz/webapp/server/webserver.py
virtualenv = /opt/venv3
#home = /opt/venv3/bin
gevent = 1000
enable-threads = true
我正在使用 nginx 作为此应用程序的反向代理,我的 nginx 服务器块是:
server {
#listen 80 default_server;
#listen [::]:80 default_server;
client_body_timeout 15s;
client_header_timeout 15s;
server_name x.y.z;
root /var/xyz/webapp;
index index.html index.htm index.nginx-debian.html;
location /{
proxy_pass http://127.0.0.1:5000;
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;
}
location /socket.io {
include proxy_params;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://localhost:5000/socket.io;
}
}
现在每次客户端尝试连接到套接字时,请求都会频繁收到 400 Bad Request Error。但是如果我从我的 uwsgi .ini 文件中评论这些行:
#master = true
#processes = 5
套接字已连接,运行正常。