ThingsBoard 3.2.2切换HTTPS后最新遥测不显示及握手报错咨询
问题解答
1. 切换HTTPS后设备最新遥测为空的原因
从提供的服务日志可确认,你推送的遥测数据已经成功写入数据库(TS Latest队列的totalSaved为17,totalFailed为0),数据本身没有丢失。页面看不到数据的核心原因是ThingsBoard前端依赖WebSocket协议实现遥测数据的实时更新,升级HTTPS后WebSocket握手失败,前端无法接收服务端的实时数据推送,因此展示为空。如果手动刷新页面能看到历史遥测数据,即可完全确认是该问题导致。
2. 报错「Handshake failed due to invalid Upgrade header: null」的含义及解决方法
报错含义
这是WebSocket握手阶段的典型错误:WebSocket协议要求客户端发起握手请求时必须携带Upgrade: websocket、Connection: Upgrade等专用请求头,你的HTTPS反向代理(Nginx/Apache等)没有将这些请求头透传给后端的ThingsBoard服务,导致ThingsBoard收到的请求中Upgrade头为空,拒绝了握手请求。
解决方法
根据你使用的反向代理服务调整配置即可:
- 若使用Nginx作为反向代理,在对应站点的location配置块中新增以下配置:
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host;
配置修改后执行nginx -s reload重载配置即可生效。
- 若使用Apache作为反向代理,在站点配置中新增以下规则:
RewriteEngine On RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule ^/?(.*) "ws://127.0.0.1:8080/$1" [P,L]
配置修改后重启Apache服务即可。
配置生效后刷新前端页面,WebSocket会自动重新握手,遥测数据即可正常实时展示,日志中的报错也会消失。
内容的提问来源于stack exchange,提问作者Rio
相关产品推荐
相关产品推荐

