Skip to content

子域映射

这页解决什么问题

子域映射 是子域模式最核心的页面。

子域模式也是当前最推荐优先评估的公网 Web 服务接入路线。

它决定的是:

  • 你的域名是什么
  • 哪个子域承担统一登录入口
  • 每个业务子域最终转发到哪个本地服务
  • 业务子域是“登录优先”还是“严格白名单”

如果你把子域模式理解成:

同一父域下,所有服务都先经过 fknock,再按 Host 分发

那么这页就是把这件事真正落地的地方。

在推荐的公网部署方式里,外部访问形式通常会写成:

  • auth.example.com:7999
  • alist.example.com:7999
  • fnos.example.com:7999

也就是:

  • 子域名不变
  • 端口统一仍然是 7999

如果你后面再给这套子域体系前面接一层:

  • 腾讯云 EdgeOne
  • 阿里云 ESA

那么对最终用户来说,外部访问形式更常见会变成:

  • https://auth.example.com
  • https://alist.example.com
  • https://fnos.example.com

但要特别记住:

  • 对外暴露的访问形式变成了标准 80 / 443
  • 真正回到 fknock 的源站端口,仍然应该是 7999

先理解:子域模式不是路径映射的皮肤版

和反代模式不同,子域模式的主角不再是:

  • /alist
  • /jellyfin
  • /nav

而是:

  • auth.example.com
  • alist.example.com
  • jellyfin.example.com

也就是说,切到子域模式后,你应该把心智从:

  • “路径怎么规划”

改成:

  • “域名、鉴权子域、业务子域怎么规划”

如果你之前已经在反代模式里配过一堆路径映射,建议先清理掉,再来使用子域模式。

上半部分:子域模式配置

域名

这是最重要的起点。

例如你填:

  • example.com

那后续新增映射时,你通常只需要填写:

  • alist
  • nav
  • jellyfin

系统会自动补成:

  • alist.example.com
  • nav.example.com
  • jellyfin.example.com

如果域名还没保存,页面也会阻止你继续批量发现和新增子域映射。

当前鉴权服务

这是子域模式里最关键的角色。

它的本质是:

  • 统一登录入口

例如最常见就是:

  • auth.example.com

  • 未登录用户访问业务子域时,会先被引导到这个鉴权子域

  • 登录完成后,再跳回原始业务子域

如果按推荐方式收敛公网入口,那么它在外部更常见的访问形式就是:

  • auth.example.com:7999

如果你前面接了 EdgeOne / ESA,则更常见会变成:

  • auth.example.com

因为外部标准端口由加速平台接住,再回源到 fknock 的 7999

最常见的设置路径是:

  1. 先保存域名
  2. 子域映射 右上角点击 添加鉴权服务
  3. 系统会自动创建默认登录入口,通常是 auth.example.com
  4. 鉴权服务就绪后,再点击 一键发现 批量接入业务子域

大多数场景下:

  • 留空即可

系统会自动推导更合适的 Cookie 域范围。

只有当你非常明确地想把登录态固定到某个父域时,才建议手动填写,例如:

  • .example.com

新映射默认访问方式

这只影响:

  • 之后新添加的映射默认值

不会回头改动已经存在的映射。

两个选项分别是:

  • 登录优先:未登录时先跳转到鉴权子域
  • 严格白名单:不在白名单的来源会被网关直接拦截

绝大多数第一次部署,推荐先保持:

  • 登录优先

阿里云 ESA / 腾讯云 EdgeOne 支持

这是最近新增的一个子域模式专用开关。

路径仍然在:

  • 子域映射 → 子域模式配置

适合的场景是:

  • 你的外部访问已经不再直接暴露 :7999
  • 而是前面接了 EdgeOneESA

开启后,系统会做两件更符合这类平台的事:

  1. 公开鉴权地址不再自动补访问端口
  2. 优先按 ESA / EdgeOne 的真实客户端 IP 能力来理解访问来源

也就是说,开启这个开关后:

  • 外部登录地址更适合写成 https://auth.example.com

而不是继续写成:

  • https://auth.example.com:7999

如果你使用的是:

  • 阿里云 ESA

还要再补一个前提:

  • 请在 ESA 站点里开启“托管转换”中的“添加真实客户端 IP 标头”

否则来源 IP 的识别就容易偏向 ESA 节点本身,而不是最终访客。

Passkey RP 配置

子域模式下,Passkey 有两个常见思路:

  • 鉴权域名
  • 父域 RP ID

推荐默认先用:

  • 鉴权域名

因为兼容性最好。

只有当你明确希望:

  • 同一父域下多个子域共享一组 Passkey

才建议改成:

  • 父域 RP ID

并填写类似:

  • example.com

如果你启用了父域 RP,那么它必须和鉴权域名相同,或是鉴权域名的父域,不能随便乱填。

下半部分:Host 映射

这里的每一条记录,本质上都是:

  • 某个子域名某个本地 HTTP 服务

例如:

  • alist.example.comhttp://127.0.0.1:5244
  • nav.example.comhttp://127.0.0.1:3000

外部用户实际访问时,则通常是:

  • alist.example.com:7999
  • nav.example.com:7999

如果你前面再接了 EdgeOne / ESA,那么对外更常见会写成:

  • alist.example.com
  • nav.example.com

但它们在加速平台里的回源目标,仍然应该指向 fknock 的:

  • 7999

一条 Host 映射包含哪些信息

Host / 子域名

如果域名已经保存,大多数时候你只要填:

  • alist
  • nav

系统会自动补成完整 Host。

只有当某条映射本来就不在当前域名下时,编辑界面才会退回“完整 Host”输入模式。

Target

这里填的是本地服务地址。

最常见是:

  • http://127.0.0.1:5244
  • http://127.0.0.1:3000
  • http://127.0.0.1:5666

推荐尽量让业务服务只监听:

  • 127.0.0.1

这样更不容易绕过网关被直接访问。

鉴权服务映射

这是子域模式里的特殊映射。

最常见的创建方式不是手动新建普通映射,而是:

  • 先保存域名
  • 点击 添加鉴权服务
  • 让系统自动生成默认 auth.<域名> 映射

如果你手动把某条映射的 Target 指向鉴权端口,系统也会自动把它识别为鉴权服务。

还要注意两个限制:

  1. 只能有一条 Host 映射作为鉴权服务
  2. 鉴权服务不能再开启“要求认证”或“严格白名单”

否则会导致登录入口自己先把自己堵死。

要求登录

这是业务子域最常见的开关。

开启后:

  • 未登录访问这个子域,会先跳到鉴权子域登录
  • 登录成功后,再返回原业务子域

如果这条映射本身就是鉴权服务,这个开关会被禁用。

展示标题与图标

这是最近子域映射里新增的一组很实用的小能力。

  • 保存映射时,系统会尝试抓取目标页面的标题和图标
  • 抓到的标题会显示在映射列表里
  • 图标也会一起显示在列表里,方便你快速辨认服务

需要注意两点:

  1. 这里抓取的是“目标服务当前页面元数据”
  2. 你手动填写的 展示标题 只会覆盖 fknock 里的显示名称,不会改动目标服务本身

也就是说:

  • title 更像自动识别结果
  • title_override 更像你写给自己看的本地别名

如果目标服务暂时不可访问,或本身没有合适的页面标题,列表里就可能仍显示原始 Host。

显示小工具

这是最近新增的一个细化开关。

默认开启时:

  • 完成登录后,业务子域页面右下角通常会出现一个 toolbar 小工具
  • 你可以用它快速切换应用,或直接退出登录

如果某个业务页面本身就比较拥挤,或者你不希望它显示这个入口,也可以针对单条 Host 映射把它关掉。

严格白名单

开启后:

  • 未在白名单中的来源 IP 会被网关直接拦截
  • 不再跳转到登录页

因此它更适合:

  • 已经知道固定来源网段
  • 或对暴露面要求更严格的后台

而不太适合第一次部署时大面积默认开启。

最近这页多出的几项实用动作

子域映射 右上角的动作菜单里,最近多了几项很实用的操作。

清空所有配置

这是最近非常适合“重新搭一遍子域入口”的一个重置动作。

它清掉的是:

  • 当前鉴权服务映射
  • 全部 Host 映射

但不会动这些内容:

  • 域名
  • 其他子域模式配置

还要特别注意:

  • 这个动作现在需要两次确认
  • 第一次会先提示影响范围
  • 第二次才会真正执行清空

所以它更适合:

  • 你想整体重建子域映射
  • 想保留域名等基础配置
  • 不想一条一条手动删掉 Host 映射

如果你只是想改其中一条业务映射,仍然更建议直接编辑或单独删除那条记录。

刷新图标和标题

适合这些场景:

  1. 目标服务改了站点标题
  2. 你刚更新了应用,favicon 也换了
  3. 某次保存时目标页面临时不可访问,导致没有成功抓到元数据

执行后,系统会重新去目标服务抓取:

  • 页面标题
  • favicon

导出为书签

这是最近非常适合日常使用的一项能力。

它会把当前子域映射导出成一份浏览器可导入的书签 HTML 文件。

  • 导出的是业务子域,不包含鉴权服务映射
  • 书签标题优先使用你手动填写的展示标题
  • 如果没填展示标题,就退回自动抓取标题,再不行就退回 Host 本身

这很适合:

  • 新设备快速导入一整套常用子域入口
  • 在多个浏览器之间迁移服务入口
  • 让家人或团队成员快速拿到一组可点开的服务链接

一键发现能做什么

子域模式也支持:

  • 一键发现

它会:

  1. 扫描本地端口
  2. 识别可能可代理的服务
  3. 给出建议子域名
  4. 批量添加为 Host 映射

通常建议先把鉴权服务加上,再用这一步批量接入业务服务。

这一步特别适合:

  • 机器上已经跑了多个常见服务
  • 你想先快速拉清单,再做精修

子域模式下推荐的第一轮接入方式

推荐这样做:

  1. 先只接 1 到 3 个最常用服务
  2. 先保存域名并点击 添加鉴权服务
  3. 再用 一键发现 补齐第一批业务子域
  4. 业务子域先统一用 登录优先
  5. 优先先把标题、图标和登录流转验证通
  6. 服务稳定后,再逐步对个别服务改成 严格白名单

子域模式下也可以使用飞牛分享直通

如果你在子域模式里保留了一条真正指向飞牛的 Host 映射,例如:

  • fnos.example.com

那么现在也可以配合:

  • 系统设置 → 飞牛

开启 飞牛分享直通

它最适合:

  • 你希望别人直接打开飞牛原生分享链接
  • 但又不想把整个飞牛站点或其他业务子域一起放开

完整机制和前提见:

子域模式与 SSL / DDNS 的关系

子域模式几乎总是和下面两个能力强相关:

尤其是你准备长期使用:

  • auth.example.com
  • alist.example.com
  • nav.example.com

时,最常见的组合就是:

  • *.example.com
  • 正式 HTTPS
  • 公网 IPv4 / IPv6 变化时的 DDNS 自动更新
  • 子域模式自动把公网入站收敛到 7999

如果你的外部入口是:

  • EdgeOne
  • ESA

那么“公网入口收敛到 7999”更准确的理解应该是:

  • 你自己的源站侧仍然只需要把 Web 入口统一收敛到 7999
  • 最终用户侧则往往只会看到标准 80 / 443

子域模式与飞牛防火墙的关系

切换到子域模式后,系统会自动调整入站防火墙策略,而不是让你再手动做一次“最后只保留 7999”。

你可以这样理解这次变化:

  1. IPv4 / IPv6 的公网访问会统一收敛到 7999
  2. 本机回环、已建立连接、局域网、链路本地和常见容器内网等必要流量会继续放行
  3. 其他不需要的公网入站端口会默认拒绝
  4. 如果你直接裸公网访问,对外统一仍然使用 子域名:7999
  5. 如果你前面套了 EdgeOne / ESA,则外部通常直接走标准 80 / 443,但回源端口仍然是 7999

这样更符合子域模式的真实目标:

  • 统一入口
  • 统一认证
  • 统一公网暴露面

子域模式也可以补充非 Web 协议入口

虽然子域模式的主角仍然是 Web 服务,但你现在也可以在这个模式下额外补充:

  • SSH
  • MySQL
  • Redis
  • DNS

这类非 Web 服务的 TCP / UDP 入口。

对应功能在:

可以把它理解成:

  • 子域映射负责 Web 服务
  • 协议映射负责少量需要保留的非 Web 端口

这样更适合“一套域名体系 + 少量协议端口补充”的部署方式。

推荐的排错顺序

如果某个子域打不开,建议按这个顺序看:

  1. 域名是否已经先保存
  2. 这条 Host 映射的 Target 在本机能否直接打开
  3. 是否已经正确指定鉴权服务
  4. 业务子域是否误开了 严格白名单
  5. 鉴权服务是否被误设成“要求认证”
  6. SSL 证书是否覆盖了当前子域
  7. 域名解析是否已经指到当前公网入口
  8. 如果前面接了 EdgeOne / ESA,是否已经把回源端口改成 7999
  9. 如果前面接了 EdgeOne / ESA,是否已经关闭缓存、开启 WebSocket、关闭 IPv6

相关阅读

QQ群:1081609274