如何解决线上WebSocket返回400错误的排查过程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计887个文字,预计阅读时间需要4分钟。
现象+生产环境WebSocket无法正常连接,服务端返回400+Bad Request,开发及测试环境均正常。+抓包排查+src:nginx服务器+172.16.177.193+dst:imp应用服务器+172.16.177.218+问题定位+观察到header中的ho
现象生产环境websocket无法正常连接,服务端返回400 bad request,开发及测试环境均正常。
抓包排查src:nginx服务器 172.16.177.193
dst:imp应用服务器 172.16.177.218
观察到header中的host值带有下划线,在一些中间件(如kafka、hadoop)中,对host中的特殊字符也有限制。由此猜测是header问题。
经排查,此header来自nginx的upstream
修改nginx的upstream配置,去除下划线
解决方案2既然upstream中用了下划线,为何普通的http请求正常,而websocket则返回400呢?
再看正常的http请求的抓包
src: nginx服务器 172.31.47.151
dst: imp应用服务器 172.31.47.153
可见,header中的host,被转发到了目标服务器,而此host并没有下划线,正常请求。
本文共计887个文字,预计阅读时间需要4分钟。
现象+生产环境WebSocket无法正常连接,服务端返回400+Bad Request,开发及测试环境均正常。+抓包排查+src:nginx服务器+172.16.177.193+dst:imp应用服务器+172.16.177.218+问题定位+观察到header中的ho
现象生产环境websocket无法正常连接,服务端返回400 bad request,开发及测试环境均正常。
抓包排查src:nginx服务器 172.16.177.193
dst:imp应用服务器 172.16.177.218
观察到header中的host值带有下划线,在一些中间件(如kafka、hadoop)中,对host中的特殊字符也有限制。由此猜测是header问题。
经排查,此header来自nginx的upstream
修改nginx的upstream配置,去除下划线
解决方案2既然upstream中用了下划线,为何普通的http请求正常,而websocket则返回400呢?
再看正常的http请求的抓包
src: nginx服务器 172.31.47.151
dst: imp应用服务器 172.31.47.153
可见,header中的host,被转发到了目标服务器,而此host并没有下划线,正常请求。

