使用的服务器是centos7
,部署使用的是 nginx + python3.7 + super + gunicorn + eventlet
,
部署的代码是flask-socketio
的官方的 example 源码,链接为https://github.com/miguelgrinberg/Flask-SocketIO/tree/master/example
,
这份代码在本地跑起来是没有问题的,但是部署到服务器之后,浏览器的控制台一直报错,页面不能正常通信,并且一直尝试连接,每一秒钟都会更新一次 sid,浏览器的控制台报错如下:
index.js:83 POST http://192.168.1.110:9001/socket.io/?EIO=3&transport=polling&t=Mx-f5Fy&sid=85cb69f8fd484f5287b865a1cfe 400 (BAD REQUEST)
WebSocket connection to 'ws://192.168.1.110:9001/socket.io/?EIO=3&transport=websocket&sid=85cb69f8fd484f5287b865a1cfe' failed: WebSocket is closed before the connection is established.
我的 nginx 配置如下:
说明一下,proxy_pass 到 20001 是因为我的 super 托管到这个端口的,所以 20001 的 api 这个时候服务还是正常的
server {
listen 9001;
server_name _;
access_log /var/log/nginx/access-sio.log main;
error_log /var/log/nginx/error-sio.log;
error_page 404 /404.html;
error_page 400 502 503 504 /50x.html;
location = / {
root /data/www/sio/;
index index.html;
}
location / {
proxy_set_header Host $http_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-Proto $scheme;
include proxy_params;
proxy_pass http://127.0.0.1:20001/;
proxy_redirect off;
}
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://127.0.0.1:20001/socket.io;
}
}
麻烦有了解的帮忙解答一下,这个问题我在网上找了,都是说在 nginx 中添加配置,但是配置我已经加进去了,
现在实在不知道是啥问题了...
1
Latin 2019-12-13 18:25:45 +08:00
加配置重启 nginx 了吗?
|
2
sidegem 2019-12-13 19:15:55 +08:00
location /ws { # For websocket support
proxy_pass http://10.1.1.13:8080; proxy_http_version 1.1; proxy_set_header Upgrade websocket; proxy_set_header Connection upgrade; proxy_read_timeout 86400; } 少个 proxy_set_header 配置? |
3
superrichman 2019-12-13 21:10:56 +08:00
eventlet 换 gevent 试试
|
6
chuxiaonan 2019-12-14 15:02:03 +08:00 via iPhone
当时似乎也遇到过 好像是版本的问题导致的
客户端和服务端全部降版本 然后锁住 重试一下试试 |
7
kayseen OP |