子域映射
这页解决什么问题
子域映射 是子域模式最核心的页面。
子域模式也是当前最推荐优先评估的公网 Web 服务接入路线。
它决定的是:
- 你的域名是什么
- 哪个子域承担统一登录入口
- 每个业务子域最终转发到哪个本地服务
- 业务子域是“登录优先”还是“严格白名单”
如果你把子域模式理解成:
同一父域下,所有服务都先经过 fknock,再按 Host 分发
那么这页就是把这件事真正落地的地方。
在推荐的公网部署方式里,外部访问形式通常会写成:
auth.example.com:7999alist.example.com:7999fnos.example.com:7999
也就是:
- 子域名不变
- 端口统一仍然是
7999
如果你后面再给这套子域体系前面接一层:
- 腾讯云 EdgeOne
- 阿里云 ESA
那么对最终用户来说,外部访问形式更常见会变成:
https://auth.example.comhttps://alist.example.comhttps://fnos.example.com
但要特别记住:
- 对外暴露的访问形式变成了标准
80 / 443 - 真正回到 fknock 的源站端口,仍然应该是
7999
先理解:子域模式不是路径映射的皮肤版
和反代模式不同,子域模式的主角不再是:
/alist/jellyfin/nav
而是:
auth.example.comalist.example.comjellyfin.example.com
也就是说,切到子域模式后,你应该把心智从:
- “路径怎么规划”
改成:
- “域名、鉴权子域、业务子域怎么规划”
如果你之前已经在反代模式里配过一堆路径映射,建议先清理掉,再来使用子域模式。
上半部分:子域模式配置
域名
这是最重要的起点。
例如你填:
example.com
那后续新增映射时,你通常只需要填写:
alistnavjellyfin
系统会自动补成:
alist.example.comnav.example.comjellyfin.example.com
如果域名还没保存,页面也会阻止你继续批量发现和新增子域映射。
当前鉴权服务
这是子域模式里最关键的角色。
它的本质是:
- 统一登录入口
例如最常见就是:
auth.example.com未登录用户访问业务子域时,会先被引导到这个鉴权子域
登录完成后,再跳回原始业务子域
如果按推荐方式收敛公网入口,那么它在外部更常见的访问形式就是:
auth.example.com:7999
如果你前面接了 EdgeOne / ESA,则更常见会变成:
auth.example.com
因为外部标准端口由加速平台接住,再回源到 fknock 的 7999。
最常见的设置路径是:
- 先保存域名
- 在
子域映射右上角点击添加鉴权服务 - 系统会自动创建默认登录入口,通常是
auth.example.com - 鉴权服务就绪后,再点击
一键发现批量接入业务子域
跨子域 Cookie 范围
大多数场景下:
- 留空即可
系统会自动推导更合适的 Cookie 域范围。
只有当你非常明确地想把登录态固定到某个父域时,才建议手动填写,例如:
.example.com
新映射默认访问方式
这只影响:
- 之后新添加的映射默认值
不会回头改动已经存在的映射。
两个选项分别是:
登录优先:未登录时先跳转到鉴权子域严格白名单:不在白名单的来源会被网关直接拦截
绝大多数第一次部署,推荐先保持:
登录优先
阿里云 ESA / 腾讯云 EdgeOne 支持
这是最近新增的一个子域模式专用开关。
路径仍然在:
子域映射 → 子域模式配置
适合的场景是:
- 你的外部访问已经不再直接暴露
:7999 - 而是前面接了
EdgeOne或ESA
开启后,系统会做两件更符合这类平台的事:
- 公开鉴权地址不再自动补访问端口
- 优先按 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.com→http://127.0.0.1:5244nav.example.com→http://127.0.0.1:3000
外部用户实际访问时,则通常是:
alist.example.com:7999nav.example.com:7999
如果你前面再接了 EdgeOne / ESA,那么对外更常见会写成:
alist.example.comnav.example.com
但它们在加速平台里的回源目标,仍然应该指向 fknock 的:
7999
一条 Host 映射包含哪些信息
Host / 子域名
如果域名已经保存,大多数时候你只要填:
alistnav
系统会自动补成完整 Host。
只有当某条映射本来就不在当前域名下时,编辑界面才会退回“完整 Host”输入模式。
Target
这里填的是本地服务地址。
最常见是:
http://127.0.0.1:5244http://127.0.0.1:3000http://127.0.0.1:5666
推荐尽量让业务服务只监听:
127.0.0.1
这样更不容易绕过网关被直接访问。
鉴权服务映射
这是子域模式里的特殊映射。
最常见的创建方式不是手动新建普通映射,而是:
- 先保存域名
- 点击
添加鉴权服务 - 让系统自动生成默认
auth.<域名>映射
如果你手动把某条映射的 Target 指向鉴权端口,系统也会自动把它识别为鉴权服务。
还要注意两个限制:
- 只能有一条 Host 映射作为鉴权服务
- 鉴权服务不能再开启“要求认证”或“严格白名单”
否则会导致登录入口自己先把自己堵死。
要求登录
这是业务子域最常见的开关。
开启后:
- 未登录访问这个子域,会先跳到鉴权子域登录
- 登录成功后,再返回原业务子域
如果这条映射本身就是鉴权服务,这个开关会被禁用。
展示标题与图标
这是最近子域映射里新增的一组很实用的小能力。
- 保存映射时,系统会尝试抓取目标页面的标题和图标
- 抓到的标题会显示在映射列表里
- 图标也会一起显示在列表里,方便你快速辨认服务
需要注意两点:
- 这里抓取的是“目标服务当前页面元数据”
- 你手动填写的
展示标题只会覆盖 fknock 里的显示名称,不会改动目标服务本身
也就是说:
title更像自动识别结果title_override更像你写给自己看的本地别名
如果目标服务暂时不可访问,或本身没有合适的页面标题,列表里就可能仍显示原始 Host。
显示小工具
这是最近新增的一个细化开关。
默认开启时:
- 完成登录后,业务子域页面右下角通常会出现一个
toolbar小工具 - 你可以用它快速切换应用,或直接退出登录
如果某个业务页面本身就比较拥挤,或者你不希望它显示这个入口,也可以针对单条 Host 映射把它关掉。
严格白名单
开启后:
- 未在白名单中的来源 IP 会被网关直接拦截
- 不再跳转到登录页
因此它更适合:
- 已经知道固定来源网段
- 或对暴露面要求更严格的后台
而不太适合第一次部署时大面积默认开启。
最近这页多出的几项实用动作
在 子域映射 右上角的动作菜单里,最近多了几项很实用的操作。
清空所有配置
这是最近非常适合“重新搭一遍子域入口”的一个重置动作。
它清掉的是:
- 当前鉴权服务映射
- 全部 Host 映射
但不会动这些内容:
- 域名
- 其他子域模式配置
还要特别注意:
- 这个动作现在需要两次确认
- 第一次会先提示影响范围
- 第二次才会真正执行清空
所以它更适合:
- 你想整体重建子域映射
- 想保留域名等基础配置
- 不想一条一条手动删掉 Host 映射
如果你只是想改其中一条业务映射,仍然更建议直接编辑或单独删除那条记录。
刷新图标和标题
适合这些场景:
- 目标服务改了站点标题
- 你刚更新了应用,favicon 也换了
- 某次保存时目标页面临时不可访问,导致没有成功抓到元数据
执行后,系统会重新去目标服务抓取:
- 页面标题
- favicon
导出为书签
这是最近非常适合日常使用的一项能力。
它会把当前子域映射导出成一份浏览器可导入的书签 HTML 文件。
- 导出的是业务子域,不包含鉴权服务映射
- 书签标题优先使用你手动填写的展示标题
- 如果没填展示标题,就退回自动抓取标题,再不行就退回 Host 本身
这很适合:
- 新设备快速导入一整套常用子域入口
- 在多个浏览器之间迁移服务入口
- 让家人或团队成员快速拿到一组可点开的服务链接
一键发现能做什么
子域模式也支持:
一键发现
它会:
- 扫描本地端口
- 识别可能可代理的服务
- 给出建议子域名
- 批量添加为 Host 映射
通常建议先把鉴权服务加上,再用这一步批量接入业务服务。
这一步特别适合:
- 机器上已经跑了多个常见服务
- 你想先快速拉清单,再做精修
子域模式下推荐的第一轮接入方式
推荐这样做:
- 先只接 1 到 3 个最常用服务
- 先保存域名并点击
添加鉴权服务 - 再用
一键发现补齐第一批业务子域 - 业务子域先统一用
登录优先 - 优先先把标题、图标和登录流转验证通
- 服务稳定后,再逐步对个别服务改成
严格白名单
子域模式下也可以使用飞牛分享直通
如果你在子域模式里保留了一条真正指向飞牛的 Host 映射,例如:
fnos.example.com
那么现在也可以配合:
系统设置 → 飞牛
开启 飞牛分享直通。
它最适合:
- 你希望别人直接打开飞牛原生分享链接
- 但又不想把整个飞牛站点或其他业务子域一起放开
完整机制和前提见:
子域模式与 SSL / DDNS 的关系
子域模式几乎总是和下面两个能力强相关:
尤其是你准备长期使用:
auth.example.comalist.example.comnav.example.com
时,最常见的组合就是:
*.example.com- 正式 HTTPS
- 公网 IPv4 / IPv6 变化时的 DDNS 自动更新
- 子域模式自动把公网入站收敛到
7999
如果你的外部入口是:
- EdgeOne
- ESA
那么“公网入口收敛到 7999”更准确的理解应该是:
- 你自己的源站侧仍然只需要把 Web 入口统一收敛到
7999 - 最终用户侧则往往只会看到标准
80 / 443
子域模式与飞牛防火墙的关系
切换到子域模式后,系统会自动调整入站防火墙策略,而不是让你再手动做一次“最后只保留 7999”。
你可以这样理解这次变化:
- IPv4 / IPv6 的公网访问会统一收敛到
7999 - 本机回环、已建立连接、局域网、链路本地和常见容器内网等必要流量会继续放行
- 其他不需要的公网入站端口会默认拒绝
- 如果你直接裸公网访问,对外统一仍然使用
子域名:7999 - 如果你前面套了 EdgeOne / ESA,则外部通常直接走标准
80 / 443,但回源端口仍然是7999
这样更符合子域模式的真实目标:
- 统一入口
- 统一认证
- 统一公网暴露面
子域模式也可以补充非 Web 协议入口
虽然子域模式的主角仍然是 Web 服务,但你现在也可以在这个模式下额外补充:
SSHMySQLRedisDNS
这类非 Web 服务的 TCP / UDP 入口。
对应功能在:
可以把它理解成:
- 子域映射负责 Web 服务
- 协议映射负责少量需要保留的非 Web 端口
这样更适合“一套域名体系 + 少量协议端口补充”的部署方式。
推荐的排错顺序
如果某个子域打不开,建议按这个顺序看:
- 域名是否已经先保存
- 这条 Host 映射的 Target 在本机能否直接打开
- 是否已经正确指定鉴权服务
- 业务子域是否误开了
严格白名单 - 鉴权服务是否被误设成“要求认证”
- SSL 证书是否覆盖了当前子域
- 域名解析是否已经指到当前公网入口
- 如果前面接了 EdgeOne / ESA,是否已经把回源端口改成
7999 - 如果前面接了 EdgeOne / ESA,是否已经关闭缓存、开启 WebSocket、关闭 IPv6
