升级Ubuntu至22.04后Node-RED GET请求无服务器响应排查
解决Ubuntu 22.04升级后Node-RED HTTPS GET请求无响应问题
针对你遇到的问题,从系统环境、Node.js配置、网络规则等维度逐一排查,以下是具体解决步骤:
1. 排查系统CA证书信任问题
Ubuntu 22.04更新了根证书库,Node.js默认依赖系统证书,可能出现信任不兼容:
- 临时测试:在GET请求节点的「SSL」选项中勾选「不验证证书」,如果请求恢复正常,说明是证书信任问题。
- 修复证书:执行命令更新系统证书库,重启Node-RED生效:
sudo apt update && sudo apt install --reinstall ca-certificates node-red-stop && node-red-start
2. 验证Node.js版本兼容性
Ubuntu 22.04默认Node.js版本可能与你之前使用的版本差异较大,导致Node-RED请求异常:
- 查看当前版本:
node -v,Node-RED稳定兼容版本为v16/v18/v20。 - 若版本不匹配,用nvm安装兼容版本:
# 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重启终端后安装指定版本 nvm install 18 nvm use 18 # 重启Node-RED node-red-stop && node-red-start
3. 检查防火墙与代理设置
- 防火墙规则:执行
sudo ufw status,确认允许443端口出站请求,若未允许则添加规则:sudo ufw allow out 443。 - 代理配置:若系统使用网络代理,需在Node-RED的
settings.js中添加代理参数:
修改后重启Node-RED。httpNodeOptions: { agentOptions: { proxy: 'http://你的代理地址:端口', rejectUnauthorized: false // 仅当代理无需证书验证时启用 } }
4. 启用详细日志定位错误
启动Node-RED时开启调试日志,查看请求失败的具体原因:
node-red-start --verbose
或在Node-RED编辑器右上角打开「日志」面板,重点关注证书验证、DNS解析、超时等相关错误信息。
5. 调整HTTP请求节点配置
- 延长超时时间:在HTTP请求节点的「高级」选项中,将超时时间设置为30秒(默认可能过短)。
- 模拟浏览器请求头:部分数据源会校验请求头,添加浏览器UA信息绕过拦截:在节点「请求头」中添加
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0
解决请求问题后,解析JSON写入InfluxDB步骤
- 添加「JSON」节点,连接到HTTP请求节点的输出,将返回的JSON字符串转为JavaScript对象。
- 添加「InfluxDB out」节点,配置你的InfluxDB连接信息(地址、端口、认证信息),选择目标桶/数据库。
- 在「InfluxDB out」节点中设置测量名称,将JSON对象中的字段映射为InfluxDB的字段值,标签映射为标签键值对,完成数据写入。
内容的提问来源于stack exchange,提问作者Simon Bunn
相关产品推荐
相关产品推荐

