解决nginx转发WebSocket请求问题
Kale

项目中增加了WebSocket连接,在本地是可以正常使用的,但是部署到服务器上就会出错.提示Error during WebSocket handshake: Unexpected response code: 400

看了很多网上的解决方案,觉得是nginx的问题,在conf文件中的location /中加入

1
2
3
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

这算是比较统一的解决方案了,但是仍然失败.nginx版本不会有问题.再检查服务器,发现网上很多人说阿里云不支持WebSocket.这也是个坑.很奇怪,但是后来看到19年3月的消息说阿里云全面支持WebSocket,这就排除了服务器问题.

浪费了很长时间,不用nginx的时候,直接启动项目是正常的,所以一直认为是nginx的问题.踩了很多坑,才发现是uwsgi的问题,还需要在setting.py文件里加入

1
WEBSOCKET_FACTORY_CLASS = 'dwebsocket.backends.uwsgi.factory.uWsgiWebSocketFactory'

重启uwsgi.

WebSocket正常
Status Code: 101 Switching Protocols

  • 本文标题:解决nginx转发WebSocket请求问题
  • 本文作者:Kale
  • 创建时间:2020-04-16 09:08:04
  • 本文链接:https://kalew515.com/2020/04/16/解决nginx转发WebSocket请求问题/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!