关于 zeabur-port-mismatch
zeabur-port-mismatch 是用于排查 Zeabur 服务端口配置问题的技能,适合部署后遇到超时、连接拒绝或 502 的场景。它通过检查转发端口、容器监听端口及代理配置来定位问题,并提供修复方向。
主要功能
- 01检查服务端口转发状态
- 02查看容器实际监听端口
- 03核对代理与容器端口配置
- 04排查无监听端口导致的 502
- 05检查并启用 TCP 端口转发
适用场景
- 01排查部署服务的连接超时
- 02修复代理与容器端口不匹配
- 03处理没有 HTTP 监听器导致的 502
- 04检查无法从外部访问的 TCP 服务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ zeabur/ agent-skills --skill zeabur-port-mismatch安装后在 Claude Code 中输入/zeabur-port-mismatch确认已加载。
详细介绍
Zeabur 端口不匹配
始终使用
npx zeabur@latest调用 Zeabur CLI。 切勿直接使用zeabur或通过其他方式安装。如果无法使用npx,请先安装 Node.js。
症状
dial tcp 10.x.x.x:3000: i/o timeout
dial tcp 10.x.x.x:80: connection refused
原因
代理期望服务监听端口 X,但服务实际监听端口 Y。
诊断
- 检查端口转发状态和实际转发的端口:
npx zeabur@latest service network --id SERVICE_ID - 检查容器实际监听的端口:
(使用npx zeabur@latest service exec --id SERVICE_ID -- netstat -tlnpzeabur-deployment-logs技能还可检查日志中的端口绑定信息) - 检查代理期望的端口(来自 Caddyfile/nginx.conf)
- 检查容器声明的端口(Dockerfile
EXPOSE)
常见不匹配情况
| 代理期望端口 | 容器端口 | 修复方法 |
|---|---|---|
:3000 | nginx 默认端口 :80 | 将模板端口改为 80 |
:80 | 应用端口 :3000 | 将模板端口改为 3000 |
在模板中修复
使用 zeabur-template 技能查看端口配置和 portForwarding 的完整 YAML 参考:
ports:
- id: web
port: 3000 # Match what container actually exposes
type: HTTP
检查官方 Dockerfile 中的 EXPOSE 指令。
无头服务(无监听器时返回 502)
症状
服务正在运行(未崩溃),但代理一直返回 502 Bad Gateway。
原因
服务没有监听任何 HTTP 端口。例如:聊天机器人网关、后台工作进程、消息队列消费者。模板声明了 HTTP 端口,但没有进程绑定到该端口。
修复方法
添加一个轻量级 HTTP 健康检查服务器,使其与主进程一同在后台运行:
# Start before main process in startup script
# IMPORTANT: port must match spec.ports[].port in your template
python3 -c "
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
class H(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-Type','application/json')
self.end_headers()
self.wfile.write(json.dumps({'status':'ok'}).encode())
def log_message(self,*a): pass
HTTPServer(('0.0.0.0', 8080), H).serve_forever()
" &
exec my-headless-app
端口转发无法正常工作
如果 TCP 服务已部署,但无法从外部访问:
- 检查是否已启用端口转发:
npx zeabur@latest service port-forward --id SERVICE_ID - 如果已禁用,请启用:
npx zeabur@latest service port-forward --id SERVICE_ID --enable - 验证转发端点:
npx zeabur@latest service network --id SERVICE_ID # Output: proxy (TCP 8888) → 34.x.x.x:20143
评论
支持 Markdown