用腾讯云 EdgeOne 给 fknock 做加速与回源
这篇教程适合谁
这篇教程面向下面这类用户:
- 已经准备使用
子域模式 - 已经有正式域名,希望统一走
HTTPS - 想给飞牛和各个子域站点接上中国国内加速
- 不想让最终用户继续显式访问
:7999 - 但愿意让 EdgeOne 在前面接住
80 / 443,再回源到 fknock
如果你还没选型,我更推荐优先走:
原因很简单:
- 域名已备案后,可以直接做中国大陆加速
- fknock 现在已经内置
腾讯云 EdgeOne和腾讯云 EdgeOne(CNAME 接入)两种相关 DDNS 能力 - EdgeOne 官方文档明确支持自定义回源端口、WebSocket、IPv6 开关和不缓存策略
- 相比之下,阿里云 ESA 免费版对 WebSocket 的限制更容易让飞牛场景踩坑
先记住 5 个关键结论
- 最终用户访问时可以不再显式带
:7999,但 EdgeOne 回源端口必须自定义成7999 - fknock 的
子域映射里要开启阿里云ESA / 腾讯云Edge One支持 - 缓存建议先全部关闭;等整条链路跑稳后,再只给真正的静态资源补缓存
WebSocket必须开启,否则飞牛网页、App 和部分实时连接会异常IPv6建议先关闭,避免双栈解析与回源链路不一致带来的问题
为什么这里优先推荐 EdgeOne
对 fknock 这种“动态鉴权 + 子域分发 + WebSocket + 家宽 DDNS”场景来说,EdgeOne 更像一条更顺手的路线。
最常见的优势是:
- 已备案域名可以直接走中国大陆加速
- 可以把最终用户访问统一收敛到标准
443 - 回源端口不受
80 / 443限制,直接填7999就行 - 站点缓存、WebSocket、IPv6 都是显式可配置项
一句话理解:
- 对外是
443 - 对内仍然是 fknock 的
7999
开始前先确认 4 个前提
- 你已经把 fknock 切到
子域模式 auth.example.com和业务子域已经在 fknock 里创建完成- 你知道 fknock 当前在
7999上是HTTP还是HTTPS - 如果你要中国大陆加速,你的域名已经完成 ICP 备案
这里要特别注意一点:
- 腾讯云官方文档说明,EdgeOne 站点如果选择中国大陆境内或全球可用区,需要先完成 ICP 备案
如果还没备案,那么先不要选中国大陆加速,最多只能先走不含中国大陆的全球区域。
第 1 步:先把 fknock 自己准备好
路径:
系统设置 → 模式子域映射
至少先确认这些内容已经完成:
- 已切换到
子域模式 - 已创建鉴权服务,例如
auth.example.com - 已创建业务子域,例如
alist.example.com、fnos.example.com - 从 fknock 所在机器本地访问
127.0.0.1:7999是通的
还要再做一个容易漏的动作:
- 在
子域映射 → 子域模式配置里开启阿里云ESA / 腾讯云Edge One支持
这个开关的意义是:
- 公开鉴权地址不再自动补
:7999 - 让子域模式更适合放在 ESA / EdgeOne 这类平台后面
第 2 步:在 EdgeOne 里接入站点
你可以按自己的情况选择:
NS 接入CNAME 接入
如果你只是先想跑通,并且不打算立刻迁移整个权威 DNS,通常更容易上手的是:
CNAME 接入
最常见的做法是先把下面这些子域接进来:
auth.example.comalist.example.comfnos.example.com
第 3 步:配置回源地址,端口一定改成 7999
这是整篇教程最重要的一步。
在 EdgeOne 的加速域名或回源配置里,核心思路是:
- 源站地址填你的公网 IP、DDNS 域名,或当前稳定可达的公网入口
- 回源协议按你的 fknock 实际情况来选
- 回源端口手动改成
7999
回源协议的判断方法通常是:
- fknock 的
7999已经启用 HTTPS:选HTTPS - fknock 的
7999现在还是明文 HTTP:选HTTP
不要因为最终用户访问的是 443,就误以为源站也必须写成 443。
在这条链路里:
443是 EdgeOne 对外暴露给用户的访问端口7999才是 fknock 的真实统一入口
第 4 步:先把缓存关掉
EdgeOne 本身带缓存能力,这对静态文件是优势,但对 fknock 这种动态鉴权入口,反而很容易带来副作用。
最常见的问题包括:
- 登录后仍然看到旧页面
- 刚退出又像没退出
- 重定向状态被缓存
- 飞牛页面或分享页表现不一致
所以对第一次部署,建议你直接采用最保守的策略:
- 先对这些子域全部设成
不缓存
例如:
auth.example.comalist.example.comfnos.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 步:最终验证顺序
推荐按这个顺序测:
- 先在外部网络访问
https://auth.example.com - 确认登录页能正常打开
- 登录完成后,再访问
https://alist.example.com - 再测
https://fnos.example.com - 最后再看飞牛 App 或网页实时功能是否正常
如果前面几步都通了,但飞牛仍表现异常,优先回头检查的还是这三项:
- 缓存是不是忘了关
- WebSocket 是不是没开
- IPv6 是不是还开着
最常见的 5 个坑
1. 以为对外是 443,回源也要填 443
不是。
EdgeOne 回到 fknock 时,最关键的是:
7999
2. 忘了开 阿里云ESA / 腾讯云Edge One支持
这会导致子域模式里的公开鉴权地址仍然沿用旧的端口心智,体验不够顺。
3. 缓存没关
这是最容易让人误判成“fknock 登录态有 bug”的来源之一。
4. WebSocket 没开
这会让飞牛相关场景最先出问题。
5. IPv6 没关
在家宽双栈和 DDNS 场景里,这类问题往往表现为“同域名偶尔正常、偶尔异常”。
这篇教程的标准完成状态
做到下面这些,基本就算跑通了:
- 用户访问时不再需要显式写
:7999 - EdgeOne 回源目标已经正确指向 fknock 的
7999 auth.example.com和业务子域都能稳定打开- 缓存已经关闭
- WebSocket 已开启
- IPv6 已先关闭
