家里放一台飞牛 OS(FnOS)做 NAS,想在外面也能流畅访问,直接暴露公网 IP 既不安全、速度也不稳定。比较常见的做法是套一层 CDN:域名走 Cloudflare 做解析,流量走腾讯云 EdgeOne 回源到家里的 NAS。
这套组合能跑通,但有几个地方特别容易卡住:回源端口不是 443、源站域名不能开 CDN 代理、WebSocket 超时导致登录后立刻断连。这篇按顺序把它们讲清楚。
一、整体架构
浏览器 https://cdn.example.com:443
│
▼
腾讯 EdgeOne 边缘节点(只监听 80 / 443)
│ 回源:HTTPS 28888,Host = cdn.example.com
▼
origin.example.com(Cloudflare DNS Only)→ 家庭公网 IP
│
▼
飞牛 OS NAS https 28888关键点:加速域名和源站域名是两个不同的域名。前者给人访问,后者只负责把边缘节点指到你家的 IP。
二、准备清单
| 项目 | 要求 |
|---|---|
| 公网 IP | 动态 IP 也可以,用 DDNS 自动更新 |
| 域名 | 已托管在 Cloudflare,能改 DNS 记录 |
| EdgeOne | 已开通,站点完成接入和 NS 切换 |
| NAS 端口 | HTTPS 端口已知(本文示例 28888),路由器已做端口映射 |
| 证书 | NAS 上用自签名即可,回源时关闭校验(见第三步) |
先确认一件事:EdgeOne 边缘节点默认只开放 80 和 443。所以对外访问只能是 https://cdn.example.com,不能带 :28888。端口映射那一步只在「边缘 → 你家」这一跳生效。
三、第一步:Cloudflare 配源站域名
新增一条 A 记录,专门给 EdgeOne 指路:
| 字段 | 值 |
|---|---|
| 类型 | A |
| 名称 | origin |
| 内容 | 家庭公网 IP(如 123.111.111.222) |
| 代理状态 | 仅 DNS(灰云) |
代理状态一定要关掉。如果开着橙云,这条记录解析到的是 Cloudflare 的节点 IP,EdgeOne 回源就会回到 Cloudflare 而不是你家,直接形成回环,表现是 522 或一直转圈。
然后在飞牛 OS 的 DDNS 设置里,把更新目标改成 origin.example.com。IP 变了由它负责更新,EdgeOne 只认这个域名。
四、第二步:EdgeOne 回源配置
在 EdgeOne 控制台把加速域名 cdn.example.com 接入站点,然后配置回源:
| 配置项 | 设置值 | 说明 |
|---|---|---|
| 源站地址 | origin.example.com | 不要填 IP,动态 IP 会失效 |
| 回源协议 | HTTPS | 与 NAS 的 HTTPS 端口对应 |
| 回源端口 | 28888 | 手动填,不是 443 |
| 回源 Host | cdn.example.com | NAS 若按域名区分站点,必须与之一致 |
这里的逻辑是:用户访问 443 → EdgeOne 边缘 → 转发到你家 28888。端口填错是第一个高频故障点,现象通常是 502 或连接超时。
五、第三步:关掉回源证书校验
NAS 上的证书一般是自签名的,EdgeOne 回源时如果严格校验,握手直接失败,浏览器看到的就是 502 Bad Gateway。
到「回源配置 → HTTPS 回源配置」,把验证源站 SSL 证书设为关闭。这样 EdgeOne 不校验证书有效性,只保证链路加密。
代价是回源链路的中间人风险由你自己承担。家用 NAS 场景可以接受,如果是对外服务的站点,建议给 NAS 配一张正式证书(DNS 验证签发即可)再开启校验。
六、第四步:修 WebSocket 断连
这一步是最容易被忽略的。配置正确之后,登录页能打开,但一登录就弹「连接已断开」,文件管理、终端全都用不了。
原因是飞牛 OS 的实时状态、文件传输、终端都走 WebSocket 长连接,而 CDN 默认的 WebSocket 空闲超时很短,连接被边缘节点提前掐断。
到「站点加速 → 网络优化」,确认两件事:
| 开关 | 设置 |
|---|---|
| WebSocket | 开启 |
| WebSocket 超时时间 | 300 秒或更大 |
改完保存,等配置下发(一般一两分钟)再测。
七、验证
- 浏览器访问
https://cdn.example.com,不要带端口号。 - 能正常进入登录页,且不再弹「连接已断开」。
- 随手点开文件管理、终端,确认操作有响应、不卡顿。
- 断开 Wi-Fi 用手机流量再试一次,排除内网直连造成的“假成功”。
八、排错对照表
| 现象 | 多半是 | 怎么查 |
|---|---|---|
带 :28888 打不开 | 边缘节点不监听非标端口 | 去掉端口,只访问 443 |
| 502 Bad Gateway | 回源端口错 / 证书校验没过 | 先核对端口,再关证书校验 |
| 522 或一直转圈 | 源站域名开着橙云,回源绕回 Cloudflare | 把 origin 改成仅 DNS |
| 登录后立刻断连 | WebSocket 超时太短 | 开启 WebSocket,超时调到 300 秒 |
| 白天正常,晚上连不上 | 家庭上行带宽打满或运营商限速 | 错峰测试,或降低码率/画质 |
| 过几天突然全挂 | 公网 IP 变了,DDNS 没更新 | 查 origin 记录是否等于当前 IP |
九、几点安全建议
- 别把 NAS 的 28888 直接暴露成公网入口。能走 CDN 就走 CDN,至少多一层 IP 隐藏。
- 开启两步验证,NAS 账号密码用强口令,别用 admin/admin。
- 路由器只映射必要端口,DDNS 域名不要泄露在公开页面里。
- 关注 EdgeOne 的流量额度,免费套餐有流量上限,跑满后会回源直连或限速。
- 保留一条应急通道,比如内网穿透或 VPN,CDN 配置改坏时还能进得去。
十、没有公网 IP 怎么办
上面的方案前提是有公网 IP。如果宽带是 NAT 后的内网地址,可以换两个思路:
- Cloudflare Tunnel:NAS 上跑一个
cloudflared,主动向外建立隧道,不需要公网 IP,也不需要端口映射。 - 内网穿透服务:frp、Tailscale 之类,适合自己或小范围使用。
小结
这套架构跑通只需要记住三件事:源站域名保持灰云、回源端口填真实端口、WebSocket 超时要调大。前两个决定能不能连上,第三个决定连上之后能不能用。
本文思路参考自 Engr\_Peng 的实战记录,步骤与排错部分做了重新整理和补充。