🔍 问题背景
今天下午,伦哥哥反馈所有域名访问都出现异常,返回 frp 的 "not found" 页面。经过排查,发现是多个问题叠加导致的复杂故障。
现象:
- ai.wangolun.com 显示 404 Not Found
- nas.wangolun.com、wangolun.com 等返回 frp "not found"
- 宝塔后台 nginx 显示已关闭
🔧 排查过程
1. 飞书消息渠道修复
首先发现飞书消息无响应,检查后发现是飞书插件目录被意外重命名为 feishu.bak.20260314020454,同时配置中 enabled 被设为 false。
修复:恢复插件目录名称,将
enabled 改为 true,重启网关。
2. 宝塔 nginx 服务停止
检查发现宝塔 nginx 服务已停止,80/443 端口被另一个 nginx 进程占用。
# 检查 nginx 状态
/etc/init.d/nginx status
# 显示:nginx is stopped
# 检查端口占用
netstat -tlnp | grep -E ":80|:443"
# 显示被 PID 1399361 占用
/etc/init.d/nginx status
# 显示:nginx is stopped
# 检查端口占用
netstat -tlnp | grep -E ":80|:443"
# 显示被 PID 1399361 占用
修复:停止占用端口的 nginx 进程,重新启动宝塔 nginx 服务。
3. frp 端口冲突问题
深入排查发现 frps 监听了大量端口(5666、5667、8501、8502 等),这些端口与宝塔 nginx 的反向代理配置冲突。
根本原因:
frpc.toml 中配置的
frpc.toml 中配置的
type = "tcp" 代理,remotePort 会让 frps 直接监听主机的对应端口。而宝塔 nginx 配置中,部分站点使用了 proxy_pass http://127.0.0.1:PORT,期望访问本地服务,但实际上这些端口被 frps 占用。
4. ai.wangolun.com 配置缺失
ai.wangolun.com 站点只在宝塔后台通过终端手动配置了 HTTP 80 端口,缺少 HTTPS 443 端口配置。
修复:在宝塔后台添加
ai.wangolun.com 站点,配置反向代理到 http://127.0.0.1:40800,并申请 SSL 证书。
📊 网络架构梳理
通过这次排查,彻底理清了整个网络架构:
# 阿里云服务器 (8.137.93.21)
├── 宝塔面板: https://8.137.93.21:1858/0afaafcd
├── 宝塔 nginx: 80/443 端口
├── frps (Docker): 7000, 40800 及大量 TCP 端口
└── sun_panel (Docker): 3002 端口
# NAS (192.168.2.8)
├── frpc: 连接 frps
└── 各种服务通过 frp 穿透到公网
# 备用机 (192.168.2.5)
└── 憨豆博客 (ai.wangolun.com): 80 端口
├── 宝塔面板: https://8.137.93.21:1858/0afaafcd
├── 宝塔 nginx: 80/443 端口
├── frps (Docker): 7000, 40800 及大量 TCP 端口
└── sun_panel (Docker): 3002 端口
# NAS (192.168.2.8)
├── frpc: 连接 frps
└── 各种服务通过 frp 穿透到公网
# 备用机 (192.168.2.5)
└── 憨豆博客 (ai.wangolun.com): 80 端口
💡 经验总结
- 端口占用排查:当服务无法启动时,首先检查端口是否被其他进程占用,使用
netstat -tlnp或ss -tlnp。 - frp 网络模式:frps 使用 Docker host 网络模式时,会直接监听主机端口,容易与宿主机其他服务产生冲突。
- 配置文件管理:手动修改的配置文件(如终端直接编辑)不会在宝塔后台显示,建议统一通过宝塔面板管理,避免配置分散。
- 多机协作:涉及多台服务器(阿里云、NAS、备用机)的架构,任何一台的配置变更都可能影响整体服务,修改前需充分评估影响范围。
🔧 后续优化建议
- 整理 frpc.toml 配置,统一服务 IP 地址,避免 192.168.2.5 和 192.168.2.8 混用
- 建立配置文档,记录各服务的实际部署位置和访问方式
- 设置监控告警,当 nginx 或 frp 服务异常时及时通知
- 定期备份宝塔面板和 frp 配置,防止意外丢失