腾讯云服务器OpenClaw网关连接问题专项解决方案
腾讯云服务器OpenClaw网关连接问题专项解决方案
🔍 问题诊断
当前情况:
- 服务器:腾讯云服务器(IP: 43.162.103.96)
- 端口:18789
- 问题:能访问页面,但显示"已断开与网关的连接"
- 已尝试:多种方案仍无效
问题分析:
- 页面能访问 → HTTP服务正常
- 连接断开 → WebSocket连接失败
- 云服务器环境 → 有特殊网络和安全限制
🎯 云服务器特有问题
1. 腾讯云安全组限制
腾讯云默认有严格的安全组规则,可能阻止了WebSocket连接。
2. 跨域问题(CORS)
云服务器访问可能涉及跨域问题。
3. WebSocket协议支持
某些云环境对WebSocket支持不完整。
4. 反向代理配置
可能需要Nginx反向代理来正确处理WebSocket。
🚀 解决方案(按优先级)
方案一:检查并配置腾讯云安全组(最重要)
步骤1:登录腾讯云控制台
- 访问:https://console.cloud.tencent.com/lighthouse
- 找到你的服务器实例
步骤2:检查安全组规则
- 进入"安全组"配置
- 查看入站规则(Inbound Rules)
步骤3:添加必要的端口规则
需要开放的端口:
- TCP 18789:OpenClaw HTTP/WebSocket端口
- TCP 443:如果要用HTTPS
- TCP 80:如果要用HTTP
步骤4:配置安全组规则
# 规则示例:
协议类型:TCP
端口范围:18789
来源:0.0.0.0/0(或限制为你的IP)
策略:允许
步骤5:验证端口开放
# 在服务器上检查端口监听
netstat -tlnp | grep 18789
# 从外部测试端口
telnet 43.162.103.96 18789
# 或
nc -zv 43.162.103.96 18789
方案二:配置Nginx反向代理(推荐)
为什么需要Nginx:
- 正确处理WebSocket升级
- 解决跨域问题
- 提供HTTPS支持
- 负载均衡和缓存
步骤1:安装Nginx
# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y
# CentOS
sudo yum install nginx -y
步骤2:配置Nginx反向代理
创建配置文件:
sudo nano /etc/nginx/sites-available/openclaw
配置文件内容:
server {
listen 80;
server_name 43.162.103.96; # 或你的域名
# 静态文件服务(如果有)
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
# CORS头
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}
# WebSocket特定路径
location /ws/ {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
# WebSocket超时设置
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
步骤3:启用配置
# 创建符号链接
sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx
步骤4:修改OpenClaw配置
# 告诉OpenClaw使用正确的地址
openclaw config set gateway.bind "127.0.0.1:18789"
openclaw config set gateway.controlUi.allowInsecureAuth true
# 重启OpenClaw
openclaw gateway restart
步骤5:测试访问
现在通过Nginx访问:
- http://43.162.103.96(端口80)
- 或配置域名后访问
方案三:配置HTTPS(生产环境必须)
步骤1:获取SSL证书
# 使用Certbot获取免费证书
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
步骤2:更新Nginx配置支持HTTPS
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# SSL配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# 其他配置同上
location / {
proxy_pass http://127.0.0.1:18789;
# ... 其他配置
}
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
方案四:OpenClaw特定配置调整
步骤1:检查当前配置
# 查看完整配置
openclaw config get gateway
# 查看WebSocket配置
openclaw config get gateway.websocket
步骤2:调整WebSocket配置
# 增加WebSocket超时时间
openclaw config set gateway.websocket.timeout 86400000
# 允许跨域
openclaw config set gateway.controlUi.cors true
# 设置允许的来源
openclaw config set gateway.controlUi.allowedOrigins "http://43.162.103.96,http://localhost"
# 启用详细日志
openclaw config set gateway.logLevel debug
步骤3:重启并检查
# 重启服务
openclaw gateway restart
# 查看日志
openclaw logs --follow
# 检查状态
openclaw gateway status --json
🔧 详细诊断步骤
1. 网络诊断
# 检查服务器网络
ping 43.162.103.96
# 检查端口开放
nmap -p 18789 43.162.103.96
# 检查防火墙
sudo ufw status
sudo firewall-cmd --list-all # CentOS
2. OpenClaw服务诊断
# 查看服务状态
systemctl status openclaw
# 查看进程
ps aux | grep openclaw
# 查看端口占用
ss -tlnp | grep 18789
# 测试本地连接
curl http://127.0.0.1:18789
3. WebSocket测试
# 使用wscat测试WebSocket
npm install -g wscat
wscat -c ws://43.162.103.96:18789
# 或使用curl测试WebSocket握手
curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: 43.162.103.96:18789" -H "Origin: http://43.162.103.96" http://43.162.103.96:18789
4. 浏览器控制台检查
- 打开浏览器开发者工具(F12)
- 访问
http://43.162.103.96:18789 - 查看Console和Network标签
- 注意WebSocket连接错误
🛠️ 一键修复脚本
脚本:腾讯云OpenClaw修复
#!/bin/bash
echo "=== 腾讯云OpenClaw网关连接修复脚本 ==="
# 1. 停止服务
echo "1. 停止OpenClaw服务..."
openclaw gateway stop
sleep 2
# 2. 备份配置
echo "2. 备份当前配置..."
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup.$(date +%Y%m%d)
# 3. 配置调整
echo "3. 调整配置..."
openclaw config set gateway.bind "0.0.0.0:18789"
openclaw config set gateway.controlUi.allowInsecureAuth true
openclaw config set gateway.controlUi.cors true
openclaw config set gateway.websocket.timeout 86400000
openclaw config set gateway.logLevel debug
# 4. 重启服务
echo "4. 重启服务..."
openclaw gateway start
sleep 5
# 5. 检查状态
echo "5. 检查服务状态..."
openclaw gateway status
# 6. 检查端口
echo "6. 检查端口监听..."
netstat -tlnp | grep 18789
# 7. 测试本地连接
echo "7. 测试本地连接..."
curl -s http://127.0.0.1:18789 > /dev/null && echo "本地连接成功" || echo "本地连接失败"
echo "=== 修复完成 ==="
echo "请检查腾讯云安全组规则,确保端口18789已开放"
echo "访问地址:http://43.162.103.96:18789"
📋 腾讯云安全组配置指南
1. 控制台操作步骤:
- 登录腾讯云控制台
- 进入"轻量应用服务器"
- 选择你的实例
- 点击"防火墙"或"安全组"
- 点击"添加规则"
2. 需要添加的规则:
规则1:
- 类型:自定义
- 来源:0.0.0.0/0
- 协议端口:TCP:18789
- 策略:允许
- 备注:OpenClaw HTTP/WebSocket
规则2(可选):
- 类型:自定义
- 来源:0.0.0.0/0
- 协议端口:TCP:80
- 策略:允许
- 备注:HTTP访问
规则3(可选):
- 类型:自定义
- 来源:0.0.0.0/0
- 协议端口:TCP:443
- 策略:允许
- 备注:HTTPS访问
3. 验证安全组:
# 在服务器上验证
sudo iptables -L -n | grep 18789
# 从外部验证
telnet 43.162.103.96 18789
⚠️ 常见云服务器问题
问题1:端口被云厂商屏蔽
现象:本地能访问,外部不能访问
解决:检查云控制台安全组、防火墙、网络ACL
问题2:WebSocket握手失败
现象:HTTP能访问,WebSocket连接失败
解决:配置Nginx反向代理,正确设置Upgrade头
问题3:跨域问题
现象:浏览器控制台显示CORS错误
解决:配置CORS头,或使用Nginx统一代理
问题4:连接超时
现象:连接建立后很快断开
解决:增加超时时间,检查网络稳定性
🎯 推荐部署架构
简单架构(适合测试):
用户浏览器 → 腾讯云安全组 → OpenClaw (18789)
生产架构(推荐):
用户浏览器 → 腾讯云安全组 → Nginx (80/443) → OpenClaw (18789)
↓
SSL证书
高可用架构:
用户 → 腾讯云负载均衡 → 多台Nginx → 多台OpenClaw
📊 故障排查流程图
开始
↓
检查页面是否能访问
├── 不能访问 → 检查安全组/防火墙
└── 能访问但连接断开 → 继续
↓
检查浏览器控制台错误
├── WebSocket错误 → 配置Nginx反向代理
├── CORS错误 → 配置CORS头
└── 其他错误 → 查看具体错误信息
↓
检查服务器日志
├── OpenClaw日志 → openclaw logs --follow
├── Nginx日志 → tail -f /var/log/nginx/error.log
└── 系统日志 → journalctl -u openclaw
↓
根据日志调整配置
↓
测试验证
↓
问题解决 ✓
🆘 紧急恢复
如果所有方法都失败,尝试完全重新部署:
步骤1:备份数据
# 备份配置
cp -r ~/.openclaw ~/.openclaw.backup
# 备份数据库(如果有)
cp -r /var/lib/openclaw /var/lib/openclaw.backup
步骤2:重新安装
# 卸载旧版本
npm uninstall -g openclaw
# 清理残留
rm -rf ~/.openclaw/cache
rm -rf ~/.openclaw/logs
# 重新安装
npm install -g openclaw@latest
步骤3:重新配置
# 初始配置
openclaw configure
# 使用推荐配置
openclaw config set gateway.bind "0.0.0.0:18789"
openclaw config set gateway.controlUi.allowInsecureAuth true
openclaw config set gateway.auth.mode "token"
openclaw config set gateway.auth.token "你的安全token"
# 启动服务
openclaw gateway start
📞 腾讯云特定支持
1. 腾讯云文档:
- 轻量应用服务器:https://cloud.tencent.com/document/product/1207
- 安全组配置:https://cloud.tencent.com/document/product/213/39740
2. 联系腾讯云支持:
- 控制台提交工单
- 描述问题:OpenClaw服务端口18789无法外部访问
3. 社区资源:
- 腾讯云开发者社区
- OpenClaw官方文档
总结建议:
1. 先检查腾讯云安全组 - 这是最常见的问题
2. 配置Nginx反向代理 - 解决WebSocket问题
3. 查看详细日志 - 定位具体错误
根据你的描述,最可能的问题是腾讯云安全组没有开放18789端口,或者需要Nginx来处理WebSocket连接。
你可以先运行我提供的一键修复脚本,然后重点检查安全组配置。如果需要,我可以帮你查看具体的错误日志。