🚪🔥 双门神挡路:Node 服务在腾讯云+宝塔上“3001 端口永远不通”的血泪排查录
关键词:Node.js / 腾讯云 / 宝塔 / 安全组 / 系统防火墙 / 端口放行
1. 故事开场
在腾讯云 OpenCloudOS 上起了一个 Express,监听 3001,本地 curl 127.0.0.1:3001 秒回 Cannot GET /,但是——
# 外网
curl http://<公网IP>:3001
# 结果:一直 Timeout 🤬
20 分钟之后,发现原来有 两道门:
- 云平台的“大院门”——安全组
- 宝塔的“房门”——系统防火墙
只开任意一道,流量都会被另一道直接拍死。
云主机安全组如下:

宝塔安全组如下(登录宝塔的操作界面)

2. 主流程图(Mermaid)
3. 排查 checklist(按图层从高到低)
| 层级 | 检查点 | 一键命令 / 操作 | 预期结果 |
|---|---|---|---|
| ① 应用 | Node 监听地址 | ss -lntp | grep 3001 | 0.0.0.0:3001 |
| ② 房门 | 系统防火墙 | firewall-cmd --list-ports | 含 3001/tcp |
| ③ 房门 | 宝塔面板-防火墙 | 可视化:安全 → 防火墙 → 放行 3001 | 状态“正常” |
| ④ 房门 | Nginx 防火墙插件 | 插件 → 设置 → 放行 3001 或临时关闭 | 不再拦截 |
| ⑤ 大院门 | 云安全组 | 控制台 → 入站规则 → TCP 3001 放行 | 策略“放行” |
| ⑥ 大院门 | 云防火墙(可选) | 控制台 → 云防火墙 → 入站 3001 放行 | 策略“放行” |
4. 实战命令速查
# 1. 确认监听
ss -lntp | grep 3001
# 2. 放行 firewalld(CentOS/OpenCloudOS)
firewall-cmd --permanent --add-port=3001/tcp
firewall-cmd --reload
# 3. 本地快速自测
curl http://127.0.0.1:3001
# 4. 外网调试
curl -v http://<公网IP>:3001
# 5. 实时抓包(看包到底到没到)
tcpdump -i any -n port 3001
5. 常见坑位 Top3
- 只在宝塔放行,忘了安全组 → 包根本进不了服务器,外网一直超时。
- Node 只监听 127.0.0.1 → 本地能通,外网依旧 Connection refused。
- Nginx 防火墙插件默认拦非 80/443 → 两层门都开了,却被插件顺手丢弃。
6. 结论口诀
“先开大院门,再开房门,地址别只绑 127.0.0.1!”
两道门都放行后,再次 curl <公网IP>:3001 ——
终于看见熟悉的 Cannot GET / 时,眼泪掉下来 😭。
7. 延伸阅读
🎉 你的 Node 服务现在真正“在线”了! 记得收藏 checklist,下次加端口 3 分钟搞定。
以我之思,借AI之力

289

被折叠的 条评论
为什么被折叠?



