生产版 Tunnel 修复指南
问题诊断(2026-02-08)
当前状态
Tunnel 连接状态
- 容器:
mbe-cloudflared - Tunnel ID:
456cc7cd-718a-46f8-acd5-82dd7cd674c4(生产版mbe-prod) - 连接状态:✅ 已连接(
Registered tunnel connection) - Token:已正确配置(生产版 Token)
- 容器:
配置问题
- Tunnel 配置中的路由指向开发版服务:
dev-app.hi-maker.com→mbe-pwa-dev:80admin.hi-maker.com→mbe-admin-ui-dev:3000aigc-dev.hi-maker.com→mbe-aigc-committee-dev:3002mbe-dev.hi-maker.com→mbe-api:8000
- 应该配置为生产版路由:
mbe.hi-maker.com→mbe-api:8000app.hi-maker.com→mbe-pwa:80(如果存在)admin.hi-maker.com→mbe-admin-ui:3000(如果存在)
- Tunnel 配置中的路由指向开发版服务:
服务状态
- 生产版服务 (
mbe-api) 未运行 - 只有开发版服务 (
mbe-api-dev) 在运行
- 生产版服务 (
修复步骤
步骤 1:更新 Cloudflare Dashboard 中的 Tunnel 配置
访问 Cloudflare Dashboard
- URL:https://one.dash.cloudflare.com/
- 进入:Networks > Tunnels
选择生产版 Tunnel
- 找到 Tunnel:
mbe-prod - 点击:Configure
- 找到 Tunnel:
更新 Public Hostname 配置
删除所有开发版路由,添加生产版路由:
删除以下路由:
dev-app.hi-maker.com→mbe-pwa-dev:80admin.hi-maker.com→mbe-admin-ui-dev:3000aigc-dev.hi-maker.com→mbe-aigc-committee-dev:3002mbe-dev.hi-maker.com→mbe-api:8000
添加生产版路由:
- Subdomain:
mbe - Domain:
hi-maker.com - Service Type:
HTTP - URL:
http://mbe-api:8000
可选路由(如果存在生产版服务):
app.hi-maker.com→http://mbe-pwa:80admin.hi-maker.com→http://mbe-admin-ui:3000
保存配置
- 点击:Save
- 等待配置同步(通常几秒钟)
步骤 2:启动生产版服务
# 进入项目目录
cd d:\Mises\mbe-monorepo
# 启动生产版服务(包括数据库、Redis、API等)
docker compose -f docker-compose.yml up -d
# 检查服务状态
docker ps --filter "name=mbe-api" --format "table {{.Names}}\t{{.Status}}"
预期输出:
NAMES STATUS
mbe-api Up X minutes (healthy)
步骤 3:重启 Tunnel 容器
# 重启 Tunnel 容器以应用新配置
docker restart mbe-cloudflared
# 等待几秒后检查日志
Start-Sleep -Seconds 5
docker logs mbe-cloudflared --tail 30
预期日志:
INF Updated to new configuration config="{\"ingress\":[{\"hostname\":\"mbe.hi-maker.com\",\"originRequest\":{},\"service\":\"http://mbe-api:8000\"},{\"service\":\"http_status:404\"}],\"warp-routing\":{\"enabled\":false}}"
INF Registered tunnel connection
步骤 4:验证修复
检查 Tunnel 状态
docker logs mbe-cloudflared --tail 20应该看到:
Registered tunnel connectionUpdated to new configuration(包含mbe.hi-maker.com)
检查 Cloudflare Dashboard
- 访问:https://one.dash.cloudflare.com/
- 进入:Networks > Tunnels > mbe-prod
- 状态应为:HEALTHY ✅
测试访问
# 测试生产版 API curl https://mbe.hi-maker.com/api/health # 或使用浏览器访问 # https://mbe.hi-maker.com/api/health
验证清单
- Cloudflare Dashboard 中
mbe-prodTunnel 状态为 HEALTHY - Tunnel 日志显示
Registered tunnel connection - Tunnel 配置包含
mbe.hi-maker.com→http://mbe-api:8000 - 生产版服务
mbe-api正在运行 - 可以访问
https://mbe.hi-maker.com/api/health
常见问题
Q1: Tunnel 配置更新后仍然显示开发版路由
原因: 配置同步需要时间,或缓存问题
解决:
# 重启 Tunnel 容器
docker restart mbe-cloudflared
# 等待 10-30 秒后检查日志
Start-Sleep -Seconds 10
docker logs mbe-cloudflared --tail 50 | Select-String "Updated to new configuration"
Q2: 502 Bad Gateway
原因: 生产版服务未运行或服务 URL 配置错误
解决:
# 检查生产版服务状态
docker ps --filter "name=mbe-api"
# 如果未运行,启动服务
docker compose -f docker-compose.yml up -d
# 检查服务健康状态
docker logs mbe-api --tail 20
Q3: Tunnel 连接失败
原因: Token 无效或网络问题
解决:
- 检查
.env文件中的CLOUDFLARE_TUNNEL_TOKEN是否正确 - 在 Cloudflare Dashboard 重新生成 Token
- 更新
.env文件并重启容器
注意事项
开发版和生产版可以同时运行
- 开发版:
mbe-tunnel-dev→dev.hi-maker.com - 生产版:
mbe-cloudflared→mbe.hi-maker.com - 两者使用不同的网络和端口,互不影响
- 开发版:
确保服务名称匹配
- Cloudflare Dashboard 中的 Service URL 必须使用 Docker 容器名
- 生产版:
http://mbe-api:8000 - 开发版:
http://mbe-api-dev:8000
定期检查日志
- 每天检查 Tunnel 日志,确保连接稳定
- 监控生产版服务健康状态
快速修复命令(一键执行)
# 1. 启动生产版服务
cd d:\Mises\mbe-monorepo
docker compose -f docker-compose.yml up -d
# 2. 等待服务启动
Start-Sleep -Seconds 10
# 3. 重启 Tunnel
docker restart mbe-cloudflared
# 4. 检查状态
Start-Sleep -Seconds 5
docker logs mbe-cloudflared --tail 30
docker ps --filter "name=mbe-api" --format "table {{.Names}}\t{{.Status}}"
注意: 执行前请确保已在 Cloudflare Dashboard 中更新了 Tunnel 配置!