Skip to content

用腾讯云 EdgeOne 给 fknock 做加速与回源

这篇教程适合谁

这篇教程面向下面这类用户:

  • 已经准备使用 子域模式
  • 已经有正式域名,希望统一走 HTTPS
  • 想给飞牛和各个子域站点接上中国国内加速
  • 不想让最终用户继续显式访问 :7999
  • 但愿意让 EdgeOne 在前面接住 80 / 443,再回源到 fknock

如果你还没选型,我更推荐优先走:

原因很简单:

  1. 域名已备案后,可以直接做中国大陆加速
  2. fknock 现在已经内置 腾讯云 EdgeOne腾讯云 EdgeOne(CNAME 接入) 两种相关 DDNS 能力
  3. EdgeOne 官方文档明确支持自定义回源端口、WebSocket、IPv6 开关和不缓存策略
  4. 相比之下,阿里云 ESA 免费版对 WebSocket 的限制更容易让飞牛场景踩坑

先记住 5 个关键结论

  1. 最终用户访问时可以不再显式带 :7999,但 EdgeOne 回源端口必须自定义成 7999
  2. fknock 的 子域映射 里要开启 阿里云ESA / 腾讯云Edge One支持
  3. 缓存建议先全部关闭;等整条链路跑稳后,再只给真正的静态资源补缓存
  4. WebSocket 必须开启,否则飞牛网页、App 和部分实时连接会异常
  5. IPv6 建议先关闭,避免双栈解析与回源链路不一致带来的问题

为什么这里优先推荐 EdgeOne

对 fknock 这种“动态鉴权 + 子域分发 + WebSocket + 家宽 DDNS”场景来说,EdgeOne 更像一条更顺手的路线。

最常见的优势是:

  • 已备案域名可以直接走中国大陆加速
  • 可以把最终用户访问统一收敛到标准 443
  • 回源端口不受 80 / 443 限制,直接填 7999 就行
  • 站点缓存、WebSocket、IPv6 都是显式可配置项

一句话理解:

  • 对外是 443
  • 对内仍然是 fknock 的 7999

开始前先确认 4 个前提

  1. 你已经把 fknock 切到 子域模式
  2. auth.example.com 和业务子域已经在 fknock 里创建完成
  3. 你知道 fknock 当前在 7999 上是 HTTP 还是 HTTPS
  4. 如果你要中国大陆加速,你的域名已经完成 ICP 备案

这里要特别注意一点:

  • 腾讯云官方文档说明,EdgeOne 站点如果选择中国大陆境内或全球可用区,需要先完成 ICP 备案

如果还没备案,那么先不要选中国大陆加速,最多只能先走不含中国大陆的全球区域。

第 1 步:先把 fknock 自己准备好

路径:

  • 系统设置 → 模式
  • 子域映射

至少先确认这些内容已经完成:

  1. 已切换到 子域模式
  2. 已创建鉴权服务,例如 auth.example.com
  3. 已创建业务子域,例如 alist.example.comfnos.example.com
  4. 从 fknock 所在机器本地访问 127.0.0.1:7999 是通的

还要再做一个容易漏的动作:

  • 子域映射 → 子域模式配置 里开启 阿里云ESA / 腾讯云Edge One支持

这个开关的意义是:

  1. 公开鉴权地址不再自动补 :7999
  2. 让子域模式更适合放在 ESA / EdgeOne 这类平台后面

第 2 步:在 EdgeOne 里接入站点

你可以按自己的情况选择:

  • NS 接入
  • CNAME 接入

如果你只是先想跑通,并且不打算立刻迁移整个权威 DNS,通常更容易上手的是:

  • CNAME 接入

最常见的做法是先把下面这些子域接进来:

  • auth.example.com
  • alist.example.com
  • fnos.example.com

第 3 步:配置回源地址,端口一定改成 7999

这是整篇教程最重要的一步。

在 EdgeOne 的加速域名或回源配置里,核心思路是:

  1. 源站地址填你的公网 IP、DDNS 域名,或当前稳定可达的公网入口
  2. 回源协议按你的 fknock 实际情况来选
  3. 回源端口手动改成 7999

回源协议的判断方法通常是:

  • fknock 的 7999 已经启用 HTTPS:选 HTTPS
  • fknock 的 7999 现在还是明文 HTTP:选 HTTP

不要因为最终用户访问的是 443,就误以为源站也必须写成 443

在这条链路里:

  • 443 是 EdgeOne 对外暴露给用户的访问端口
  • 7999 才是 fknock 的真实统一入口

第 4 步:先把缓存关掉

EdgeOne 本身带缓存能力,这对静态文件是优势,但对 fknock 这种动态鉴权入口,反而很容易带来副作用。

最常见的问题包括:

  • 登录后仍然看到旧页面
  • 刚退出又像没退出
  • 重定向状态被缓存
  • 飞牛页面或分享页表现不一致

所以对第一次部署,建议你直接采用最保守的策略:

  • 先对这些子域全部设成 不缓存

例如:

  • auth.example.com
  • alist.example.com
  • fnos.example.com

等整条链路稳定之后,如果你非常明确哪些路径是纯静态资源,再单独给那些静态路径补缓存。

第 5 步:确认 WebSocket 已开启

这一项不要省。

EdgeOne 官方文档提供了单独的 WebSocket 配置项。对飞牛和 fknock 来说,这类长连接能力不能假设“一定没用上”。

如果你把它关着,最常见的表现就是:

  • 飞牛网页体验异常
  • 某些页面打不开或反复断开
  • 部分实时功能不可用

所以这里的建议非常明确:

  • WebSocket 直接开启

第 6 步:IPv6 先关掉

这一点不是 EdgeOne 官方的硬性要求,而是我更推荐给家宽和 DDNS 场景的实战建议。

原因很简单:

  • EdgeOne 支持一键开启 IPv6 访问
  • 但家宽、DDNS、双栈解析和源站真实可达性,往往不是同一时间都完全稳定

一旦这里没完全对齐,就容易出现:

  • 有些客户端走 IPv4 正常
  • 有些客户端走 IPv6 异常
  • 同一个域名在不同网络环境下表现不一致

所以第一次接入时,建议先把:

  • IPv6 访问

保持关闭。

等你已经确认:

  • IPv4 链路稳定
  • 回源稳定
  • 缓存和 WebSocket 都正常

再单独做第二轮 IPv6 验证。

第 7 步:如果公网 IP 会变,再补 DDNS

如果你的公网地址不是固定的,建议再回到 fknock 的:

  • DDNS 管理

根据你的接入方式选对应提供商:

  • 腾讯云 EdgeOne
  • 腾讯云 EdgeOne(CNAME 接入)

这里尤其要注意:

  • 如果你选的是 腾讯云 EdgeOne(CNAME 接入)

一次只能更新一个源站地址,所以 更新范围 不要继续留在:

  • IPv4 & IPv6

而是改成:

  • 仅更新 IPv4
  • 仅更新 IPv6

第 8 步:最终验证顺序

推荐按这个顺序测:

  1. 先在外部网络访问 https://auth.example.com
  2. 确认登录页能正常打开
  3. 登录完成后,再访问 https://alist.example.com
  4. 再测 https://fnos.example.com
  5. 最后再看飞牛 App 或网页实时功能是否正常

如果前面几步都通了,但飞牛仍表现异常,优先回头检查的还是这三项:

  1. 缓存是不是忘了关
  2. WebSocket 是不是没开
  3. IPv6 是不是还开着

最常见的 5 个坑

1. 以为对外是 443,回源也要填 443

不是。

EdgeOne 回到 fknock 时,最关键的是:

  • 7999

2. 忘了开 阿里云ESA / 腾讯云Edge One支持

这会导致子域模式里的公开鉴权地址仍然沿用旧的端口心智,体验不够顺。

3. 缓存没关

这是最容易让人误判成“fknock 登录态有 bug”的来源之一。

4. WebSocket 没开

这会让飞牛相关场景最先出问题。

5. IPv6 没关

在家宽双栈和 DDNS 场景里,这类问题往往表现为“同域名偶尔正常、偶尔异常”。

这篇教程的标准完成状态

做到下面这些,基本就算跑通了:

  1. 用户访问时不再需要显式写 :7999
  2. EdgeOne 回源目标已经正确指向 fknock 的 7999
  3. auth.example.com 和业务子域都能稳定打开
  4. 缓存已经关闭
  5. WebSocket 已开启
  6. IPv6 已先关闭

官方资料

QQ群:1081609274