部署新环境Websocket不能建立成功
1.背景:在原来已经写好的项目,需要重新部署一套新的环境,这里主要是nginx , 和项目代码。
2.问题:在代码没有改动的前提下,页面上建立websocket 总是建立不成功,不成功的主要原因是报了603(603是我们后台自定义的错误编码,是请求后缀不正确的错误,这个其实不重要)
3.排查原因:在后台搜索603的错误code,发现是在一个Handler 中处理而设置的code,这个Handler主要是处理请求是否合法以及登录token的验证逻辑。但是现在在建立websocket的时候,却进入了这里呢?
4.问题分析:在本地跟踪调试代码,发现如果是websocket建立的时候,发起的请求,正常 的是不会走到这个preHandler 里面的,但是部署的新环境却进到了这个方法中,所以我做了一个猜想:就是浏览器发起websocket的时候,进入到后台却是一个普通的Http请求,这里突然就想到websocket所用的协议和Http的协议是不同的,当我再看websocket建立链接的请求的时候,发现请求头中有nginx , 然后我就开始怀疑nginx 默认是否支持websocket 。
5.解决办法:查找了一圈之后,就发现如果nginx支持websocket协议的话,是需要在nginx 的配置中的server内配置
// 启用支持websocket连接 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
配置上这一段的,然后就找运维配置上了之后,发现,真的成功了,也是一个从来没有遇到过的问题,特此记录之!!!
相关推荐
柳木木的IT 2020-11-04
joynet00 2020-09-23
wenf00 2020-09-14
蓝色深海 2020-08-16
wuychn 2020-08-16
取个好名字真难 2020-08-06
darylove 2020-06-26
shufen0 2020-06-20
Lovexinyang 2020-06-14
WangBowen 2020-06-14
firejq 2020-06-14
hjhmpl 2020-06-14
水痕 2020-06-07
guozewei0 2020-06-06
woniyu 2020-06-02
取个好名字真难 2020-06-01
guozewei0 2020-05-28
woniyu 2020-05-26