Skip to content

路径映射(兼容模式)

路径映射 只在 内网穿透 → 路径模式 中作为主路由使用。它把一个外部 Host 下的路径前缀转到不同 HTTP 上游,例如 /alist 转到 AList。

新部署优先使用 子域映射:Host 路由让每个应用继续运行在根路径,通常比路径改写更可靠。路径模式适合保留已有 URL,或暂时无法规划多个子域的部署。

路由模型

text
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 路由,而不是继续叠加规则。

添加映射

进入 路径映射,可使用 一键发现 生成候选规则,也可手动填写:

字段作用
触发路径/ 开头的外部路径前缀
目标地址httphttpswswss 上游 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 链路稳定后再清理旧规则。

排错

  1. 确认当前模式是 内网穿透 → 路径模式
  2. 从 fn-knock 所在环境直接访问目标 URL。
  3. 检查最长前缀是否命中预期规则。
  4. 根据上游收到的 URI 决定是否启用 去除前缀
  5. 页面资源失败时检查 重写 HTML;仍失败则评估 Host 路由。
  6. 查看请求日志中的客户端 IP、匹配路径、状态码和上游目标。

网络入口见 内网穿透,操作流程见 内网穿透上手反代访问教程

QQ群:1081609274