如何使用子域模式搭建直连访问
这篇教程适合谁
这篇教程面向下面这类用户:
- 已经具备公网 IPv4 或公网 IPv6
- 已经有自己的正式域名,例如
example.com - 想让每个服务都有独立子域,例如
alist.example.com - 不想再维护反代模式里的路径映射
- 希望保留公网直达的链路,但体验比传统直连模式更适合 Web 服务
这条路线最重要的一句话是:
子域模式可以理解成直连模式的升级版。
它仍然属于“域名直接解析到你自己的公网入口”,但访问组织方式从:
- 原始端口
升级成了:
- 独立子域
这篇教程默认讲的是:
- 裸公网直达 fknock
- 外部用户直接访问
:7999
如果你准备再在前面接一层:
- 腾讯云 EdgeOne
- 阿里云 ESA
那么请改看单独教程,因为那种场景下:
- 对外访问通常不再显式带
:7999 - 但回源端口依然要自定义成
7999 - 还需要额外处理缓存、WebSocket 和 IPv6
对应专题页在这里:
最终会完成什么
完成后,你通常会得到这样一条访问链路:
*.example.com通过 DDNS 指向你的公网入口auth.example.com:7999、alist.example.com:7999、nav.example.com:7999都进入 fknock 的统一入口- 用户先在
auth.example.com:7999完成登录 - 再回到各自的业务子域继续访问对应服务
- 系统会自动把公网入站收敛到
7999,同时保留局域网、容器内网等必要通信 - 整个过程走正式 HTTPS
开始前先确认 4 个前提
- 你的设备确实有可从公网访问的 IPv4 或 IPv6
- 你准备走“域名直达公网入口”路线,而不是
FRP/Cloudflared - 你至少有 1 到 3 个本地 Web 服务要接入
- 你准备好了一个可长期使用的域名,例如
example.com
如果你没有公网入口,而是必须依赖:
FRPCloudflared
那这篇教程并不适合你,应该改看:
先看这一条重要提醒
如果你之前已经在反代模式里添加过:
/alist/jellyfin/nav
这类“映射路径”,请先到:
路径映射
把它们全部删除掉,然后再切换到子域模式。
这是这篇教程最重要的前置提醒之一。
原因不是产品强制要求路径表必须为空,而是为了避免:
- 你还沿用旧的路径映射心智
- 切换后继续拿
/alist这类旧地址去测试 - 排错时把反代模式和子域模式的规则混在一起
第 1 步:安装并进入后台
如果尚未安装完成,先看:
确认后台可以正常打开后,再继续下面步骤。
第 2 步:如果之前用过反代模式,先删掉旧“映射路径”
路径:路径映射
如果你此前在反代模式里已经配过路径映射,请按这个顺序做:
- 打开
路径映射 - 把已有的路径映射全部删除
- 确认不再保留旧的
/alist、/nav、/photos规则
做完这一步后,再开始切模式。
第 3 步:切换到子域模式
路径:系统设置 → 模式
请选择:
子域模式
这个模式的核心变化是:
- 所有外部流量仍进入同一个网关端口
- 但不再按路径分发,而是按
Host分发 - 会先添加一个鉴权子域作为统一登录入口,再批量接入业务子域
如果你是从反代模式切过来,还要额外记住:
- 系统会在离开反代模式时先停止已经运行的
FRP/Cloudflared
因为这条路线的重点不是隧道,而是:
- 域名直接解析到公网入口
- 统一通过
子域名:7999进入同一个网关入口
第 4 步:先保存域名
路径:子域映射 → 子域模式配置
先填:
域名:例如example.com
推荐先保持:
跨子域 Cookie 范围:留空新映射默认访问方式:登录优先Passkey RP 配置:鉴权域名
先不要一开始就把这些高级项改得很复杂。
你的目标是先让:
auth.example.comalist.example.comjellyfin.example.com
这条主链路先跑通。
第 5 步:进入子域管理,先把鉴权服务加上
路径:子域映射
操作顺序:
- 点击
添加鉴权服务 - 系统会自动创建一条默认登录入口,通常就是
auth.example.com - 确认列表里已经看到这条鉴权映射
这里最关键的是:
- 统一登录入口要先建出来
- 这一步完成后,再继续做
一键发现 - 后续不要把这条鉴权服务改成“要求认证”或“严格白名单”
第 6 步:再用一键发现把业务子域拉出来
还是在:
子域映射
里继续操作。
操作顺序:
- 点击
一键发现 - 等扫描完成
- 勾选你要接入的服务
- 检查建议子域名
- 添加选中项
例如你可能会得到这样的结果:
alist→http://127.0.0.1:5244jellyfin→http://127.0.0.1:8096nav→http://127.0.0.1:3000
添加后,它们就会分别变成:
alist.example.comjellyfin.example.comnav.example.com
到这里,统一登录入口和第一批业务子域就都齐了。
第 7 步:切换到 DDNS,添加泛解析
如果你的域名会随着公网地址变化而变化,下一步就去:
DDNS 管理
这一步尤其适合:
- 你的域名是
example.com - 你只有公网 IPv6
- 你准备让同一父域下的多个子域都直达公网入口
推荐做法
以支持泛解析记录的提供商为例,例如 Cloudflare,可以直接维护:
*.example.com
然后把:
更新范围
设置成:
仅更新 IPv6
再执行一次:
测试更新
这样做的意义是:
auth.example.comalist.example.comjellyfin.example.com
这类业务子域都会统一落到当前公网 IPv6 上。
这里有两个小提醒
第一,如果你只有公网 IPv6,就不要继续保持:
IPv4 & IPv6
否则日志里会多出没有必要的 IPv4 探测失败信息。
第二,如果你后续还想让:
example.com
这个根域本身也参与访问,那它通常需要额外维护自己的记录;单独的 *.example.com 不会覆盖裸域。
第 8 步:申请 SSL 证书
路径:SSL 证书 → ACME 证书
对这条路线来说,最常见的填写方式就是:
*.example.com
这能覆盖:
auth.example.comalist.example.comnav.example.com
也就是这篇教程里的主线路线。
如果你还需要让根域:
example.com
本身也使用 HTTPS,那么再把它额外一起加进申请列表。
申请完成后,要注意一个新变化
ACME 申请成功后:
- 证书会自动保存到服务器
- 也会自动加入证书库
如果当前网关还没有自动切到它,页面里可以继续点击:
设为当前证书
让它立即生效。
这比旧的“申请完还要再自己导入一遍”路线顺手很多。
第 9 步:理解切换后的防火墙变化
切换到子域模式后,系统会自动把入站防火墙策略调整成更适合统一网关的形态:
- IPv4 / IPv6 的公网访问会统一收敛到
7999 - 本机回环、已建立连接、局域网、链路本地和常见容器内网等必要流量会继续放行
- 其他不需要的公网入站端口会默认拒绝,避免绕过 fknock 直接访问原始服务端口
因此,你对外可以统一理解成:
fnos.example.com:7999auth.example.com:7999alist.example.com:7999
都是先进入 fknock,再由网关按 Host 把请求送到对应服务。
第 10 步:从外部网络验证整条链路
建议使用:
- 手机蜂窝网络
- 或其他不在同一局域网内的网络
验证顺序:
- 先访问
https://auth.example.com:7999 - 确认登录页可以正常打开
- 完成人机验证
- 输入
TOTP,或使用已绑定的Passkey - 再访问
https://alist.example.com:7999 - 再访问
https://jellyfin.example.com:7999 - 如果你把飞牛本体放在
fnos.example.com,就再访问https://fnos.example.com:7999
如果这几步都通了,基本就说明:
- 子域解析是通的
- 鉴权入口是通的
- 业务子域跳转链路是通的
- 证书覆盖也是通的
正常情况下,这时你还会在页面右下角看到一个 toolbar 小组件。
它可以:
- 在不同业务子域之间快速切换
- 拖动到屏幕四个角落
- 直接点击退出登录
这条教程的标准完成状态
做到下面这些,才算真正完成:
- 旧的反代“映射路径”已经清理干净
- 子域模式已启用
- 域名已经保存
auth.example.com已经通过添加鉴权服务创建出来- 一键发现添加的业务子域已经可见
*.example.com的 DDNS 已能更新到当前公网 IPv6*.example.com的证书已经申请成功并生效- 已理解子域模式会自动把公网入站收敛到
7999 - 能通过任意一个业务子域的
:7999入口访问到对应服务
如果遇到问题,应该回到哪一页
| 问题 | 回看哪一页 |
|---|---|
| 不确定子域模式和其他模式怎么选 | 直连模式、反代模式与子域模式 |
| 不理解子域映射里的字段 | 子域映射 |
| DDNS 不会填,或不知道怎么设成仅 IPv6 | DDNS 管理 |
| 你用的是 Cloudflare,想直接照着配 | Cloudflare DDNS 配置 |
| SSL 不知道该申请什么 | SSL 证书 |
| 不理解 TOTP 或 Passkey | 认证体系总览、TOTP 与密码器 App、Passkey |
最后再记住一句
如果你的目标是:
- 域名直接访问
- 多个 Web 服务各用一个子域
- 统一登录,再回到原业务域名
那么子域模式通常就是:
直连模式的升级版。
