路徑回應
系統設定 → 閘道 → 路徑回應 可替反向代理服務 Host 加上少量 Path-level 規則。它只可在採用 Host 路由的子網域模式中編輯,包括公網直達的 子網域模式 與 內網穿透 → 子網域映射;路徑模式、直連模式以及單一檔案或目錄回應不提供此功能。Host 仍是主要路由;請求未命中路徑規則時,會回到該 Host 映射的預設 Target。
此功能適合 Health Check、固定狀態回應,或將同一 Host 下的一小段 API 轉送至另一個上游。若需要用大量路徑區分不同應用程式,請使用相容用途的路徑映射,不要在 Host 路由上重新打造一套 Path Gateway。
比對順序
api.example.com/healthz -> 固定回應 200 ok
api.example.com/v2/* -> http://127.0.0.1:8080
api.example.com/其他路徑 -> Host 預設 Target請先選擇既有的反向代理服務 Host。身分驗證服務 Host 與靜態檔案或目錄 Host不會出現在可選清單中。
路徑必須以 / 開頭,但不可為根路徑 /。下列路徑保留給身分驗證、分享或內部功能使用,無法設定:
- 以
/__開頭的路徑 /s/s/
每個 Host 下,相同比對方式與相同路徑只能有一條規則。
規則欄位
| 欄位 | 可用值 | 行為 |
|---|---|---|
比對方式 | 完全符合/Prefix | 只比對完整路徑,或比對該 Prefix 及其子路徑 |
動作 | 反向 Proxy/固定回應 | 轉送至另一個上游,或直接由閘道回應 |
驗證行為 | 繼承 Host/公開存取 / 要求登入 | 沿用 Host、公開目前路徑,或要求此路徑通過驗證 |
Target URL | HTTP / HTTPS URL | 只供反向 Proxy 動作使用 |
移除比對路徑 | 開/關 | 將 /api/users 以 /users 送出,或保留原始路徑 |
Rewrite HTML 路徑 | 開/關 | 替頁面資源補上 Path Prefix;純 API 通常不需要 |
固定回應可設定 100 至 599 的 Status Code、Content-Type、Response Body 與自訂 Response Header。Connection、Content-Length、Content-Type、Transfer-Encoding、Upgrade 等 Transport-level Header 無法在自訂 Header 中覆寫;Content Type 請使用專用欄位設定。
路徑驗證行為
規則預設使用 繼承 Host,沿用目前 Host 的 要求登入 與既有嚴格允許清單。選擇 公開存取 後,只有命中此路徑規則的請求略過登入;同一 Host 的其他路徑仍使用 Host 原則。
選擇 要求登入 可保護公開 Host 下的指定路徑,沿用該 Host 的允許清單與進階驗證原則。包含此類路徑的 Host 也會出現在憑證服務範圍及 Cookie 網域相容性檢查中;授權範圍以 Host 為單位,不分配單一路徑。
例如公開 Host 的 /admin 前綴要求登入時,一般頁面仍公開,/admin 及其子路徑需通過驗證。精確比對優先於前綴,前綴採最長匹配;應同時驗證受保護路徑與相鄰公開路徑。
公開路徑適合 Health Check、Webhook Callback 或確實需要匿名存取的固定內容。此選項涵蓋整個完全符合或 Prefix 範圍;將 /api Prefix 設為公開,也會公開其命中的子路徑。請縮小比對範圍,並確認 Upstream 仍執行必要的權限檢查。
反向 Proxy 動作會將 Host 的 略過 Basic Auth 憑據注入送往實際 Target 的請求,用來通過 Target Service 本身的 Basic Auth;這不是 fn-knock 的訪客登入憑據。Proxy Header 與 Host 保留會依該實際 Target 共用的 Runtime 規則決定,可能與 Host 預設 Target 的設定不同。固定回應沒有上游,因此不會傳送 Basic Auth、Proxy Header 或與 Host 保留相關的 Request Header。
來源為 Loopback、私有網路或 Link-local IP 時,身分驗證服務會回傳 local_exempt。因此,從區域網路存取時可能不會觸發登入流程或嚴格允許清單拒絕;公網原則必須從真實外部網路驗證。
範例
Health Check:
路徑 /healthz
比對 完全符合
動作 固定回應
Status Code 200
Content-Type text/plain; charset=utf-8
Body okAPI 獨立轉送至上游:
路徑 /api
比對 Prefix
動作 反向 Proxy
Target http://127.0.0.1:8080
移除路徑 開平台限制
路徑回應可用於飛牛 FPK、Docker、OpenWrt、Linux、群暉 DSM 7 SPK 與 Windows 採用 Host 路由的子網域模式,包括 內網穿透 → 子網域映射。它不會開放防火牆連接埠、建立 DNS Record 或發布 Docker Port,也無法讓原本無法連線的 Target 變成可達。
疑難排解
- 確認目前使用 Host 路由、服務 Host 的回應類型為反向代理,且已選取正確的 Host。
- 檢查路徑格式、保留路徑,以及完全符合/Prefix 的比對方式。
- 核對規則的驗證行為;選擇繼承時,再判斷請求是否遭 Host 的登入或允許清單原則攔截。
- 從 fn-knock 的 Runtime 環境存取反向 Proxy Target。
- 在請求記錄中核對 Host、路徑、路由類型、Status Code 與上游 Target。
