通过nginx访问连接websocket 错误 failed: Error during WebSocket handshake: Unexpected response code: 400

 最近项目部署到正式环境的时候发现页面websocket连接错误。如下:

通过nginx访问连接websocket 错误 failed: Error during WebSocket handshake: Unexpected response code: 400   

其中与本地环境的区别就是正式环境配置了nginx。

而我通过真实路径访问正式环境项目,也能正常连接。经查阅相关资料,在nginx.conf 配置文件中location 加入如下参数即可:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;

其中第一行是告诉nginx使用HTTP/1.1通信协议,这是websoket必须要使用的协议。

第二行和第三行告诉nginx,当它想要使用WebSocket时,响应http升级请求。

socket.io 官方issues有关于这个问题的讨论,链接:https://github.com/socketio/socket.io/issues/1942

上一篇:部署项目 WebSocket failed: Error during WebSocket handshake: Unexpected response code: 400


下一篇:C# 有关文件处理