nginx代理websocket无法链接到服务,服务端报错:Handshake failed due to invalid Upgrade header: null


一、场景

1、使用nginx代理websocket

2、websocket无法成功连接到服务端

3、服务端报错

4、nginx日志正常,没有发现与该websocket地址有关的报错


二、问题表现

1、前端表现如下

在这里插入图片描述


三、排查

1、协议是否使用有误,从上面的截图可以看出,websocket使用的是wss,那么nginx代理时,使用的协议是否是https

检查结果:nginx代理时使用的协议是https,这里就不把ssl相关配置贴出来了


2、检查改地址是否能正常访问

在这里插入图片描述

因为只是为了确认地址是否访问正常,这里将wss替换为https

检查结果:可以正常访问


3、查看nginx日志是否存在异常信息

打开nginx日志文件,搜索有问题的代理地址,查看响应码

在这里插入图片描述

检查结果:没有发现与该websocket地址有关的异常日志


4、查看服务端日志是否存在异常信息

确实存在异常信息

Line 2234: 2023-10-20 09:45:24.524 - [ERROR] - [http-nio-8083-exec-5] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2237: 2023-10-20 09:45:55.066 - [ERROR] - [http-nio-8083-exec-9] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2239: 2023-10-20 09:46:15.357 - [ERROR] - [http-nio-8083-exec-6] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2277: 2023-10-20 09:47:02.509 - [ERROR] - [http-nio-8083-exec-10] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2284: 2023-10-20 09:48:12.092 - [ERROR] - [http-nio-8083-exec-8] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null
Line 2291: 2023-10-20 09:49:22.683 - [ERROR] - [http-nio-8083-exec-3] - [o.s.w.s.server.support.DefaultHandshakeHandler - line:296]: Handshake failed due to invalid Upgrade header: null

检查结果:websocket的链接请求确实到达了服务端,但因为某些原因无法建立连接

报错信息“Handshake failed due to invalid Upgrade header: null”翻译后是“由于无效的升级头,握手失败

可以看出,异常还是出在nginx


5、检查nginx配置

发现nginx代理配置少了一行

location /FS_WEB_ASS {
    proxy_pass http://192.168.1.133:8083/FS_WEB_ASS;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header Host $http_host;
    
    # 少了下面这行配置,加上后问题得到解决
	proxy_set_header Origin "";
	
    proxy_read_timeout 86400s;
    proxy_send_timeout 60s;
    proxy_connect_timeout 60s;
}

四、原因

nginx代理配置缺少以下配置

proxy_set_header Origin "";
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值