如何解决线上WebSocket返回400错误的排查过程?

2026-05-25 14:220阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计887个文字,预计阅读时间需要4分钟。

如何解决线上WebSocket返回400错误的排查过程?

现象+生产环境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

解决方案1

修改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错误的排查过程?

现象+生产环境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

解决方案1

修改nginx的upstream配置,去除下划线

解决方案2

既然upstream中用了下划线,为何普通的http请求正常,而websocket则返回400呢?

再看正常的http请求的抓包

src: nginx服务器 172.31.47.151
dst: imp应用服务器 172.31.47.153

可见,header中的host,被转发到了目标服务器,而此host并没有下划线,正常请求。

阅读全文