路径映射(兼容模式)
路径映射 只在 内网穿透 → 路径模式 中作为主路由使用。它把一个外部 Host 下的路径前缀转到不同 HTTP 上游,例如 /alist 转到 AList。
新部署优先使用 子域映射:Host 路由让每个应用继续运行在根路径,通常比路径改写更可靠。路径模式适合保留已有 URL,或暂时无法规划多个子域的部署。
路由模型
https://example.com/alist -> http://127.0.0.1:5244
https://example.com/jellyfin -> http://127.0.0.1:8096网关按最长路径前缀匹配。若同时存在 /app 和 /app-admin,请求 /app-admin/users 会命中 /app-admin。
路径前缀会进入浏览器 URL。应用若硬编码 /、回调地址、Service Worker 作用域或 WebSocket 地址,即使启用改写仍可能异常;此时应迁移到 Host 路由,而不是继续叠加规则。
添加映射
进入 路径映射,可使用 一键发现 生成候选规则,也可手动填写:
| 字段 | 作用 |
|---|---|
触发路径 | 以 / 开头的外部路径前缀 |
目标地址 | http、https、ws 或 wss 上游 URL |
要求身份认证 | 未授权时先进入 fn-knock 登录流程 |
去除前缀 | 将 /alist/users 作为 /users 发给上游 |
重写 HTML | 把部分页面资源引用补上外部路径前缀 |
根目录模式 | 记录命中的映射后把浏览器引导到 /,兼容必须运行在根目录的应用 |
目标地址必须能从 fn-knock 运行环境访问。通常使用回环或局域网地址;Docker 中的 127.0.0.1 指容器自身,宿主机服务要使用容器可达地址。
一键发现给出的认证、改写和去前缀选项只是建议。保存前仍需按目标应用的基础路径能力调整。
访问策略
关闭 要求身份认证 会把该路径公开;开启后,公网访客先通过 fn-knock 登录,再访问上游。路径映射没有独立的严格白名单策略。IP 白名单 可提供来源授权,但不会让“要求身份认证”的路径变成只允许该来源;需要在请求到达路径前收窄来源时,使用网关可见性或外部网络层规则。
当网关识别到回环、私网或链路本地来源时,认证结果为 local_exempt,会跳过常规登录检查。因此局域网能直接打开路径并不能证明公网认证已经生效。经 FRP 或其他代理时,应在请求日志确认保留了真实公网客户端 IP。
Host 映射中的 Basic Auth 跳过 是向目标服务注入上游凭据,不是 fn-knock 登录。路径映射不应把浏览器 Basic Auth 当作网关认证替代品。
默认路由
默认路由处理根路径 /。服务发现通常把飞牛 OS 设为默认服务;只有明确需要让根路径进入其他应用时才修改它。
修改多条映射或默认路由后,可点击 同步路由 主动把当前配置重新下发到网关。保存单条规则通常已经触发同步。
何时迁移到 Host 路由
出现以下任一情况时,优先迁移:
- 静态资源、WebSocket 或登录回调仍跳回根路径。
- 应用不支持可配置的基础路径。
- 多个应用的前缀、Cookie 或 Service Worker 相互影响。
- 需要为不同服务分别设置
要求登录、定时开放或上游 Basic Auth 注入。
切到 内网穿透 → 子域映射 后,现有路径规则会保留但入口隐藏;确认 Host 链路稳定后再清理旧规则。
排错
- 确认当前模式是
内网穿透 → 路径模式。 - 从 fn-knock 所在环境直接访问目标 URL。
- 检查最长前缀是否命中预期规则。
- 根据上游收到的 URI 决定是否启用
去除前缀。 - 页面资源失败时检查
重写 HTML;仍失败则评估 Host 路由。 - 查看请求日志中的客户端 IP、匹配路径、状态码和上游目标。
