觀點 · 資訊分享

Cloudflare Tunnel 新增網址正規化:比對規則前先把網址整理乾淨,2027 年 1 月 25 日起預設開啟

cloudflared 2026.10.0 起,Tunnel 可以在比對 ingress 規則前先整理網址:還原 ../、合併重複斜線、轉換反斜線。官方說這能讓需要 Access 驗證的規則更安全,目前預設關閉,2027 年起新版預設開啟。

發布
2026-10-23
篇幅
約 5 分鐘 · 2,095 字
結構
8 節 + 4 題常見問題
標籤
#Cloudflare#Cloudflare Tunnel#cloudflared#Cloudflare Access
Cloudflare Tunnel 新增網址正規化:比對規則前先把網址整理乾淨,2027 年 1 月 25 日起預設開啟

一句話看懂:Cloudflare Tunnel 的 cloudflared 新版可以在比對規則前先「整理網址」,需要 Access 驗證的規則會更安全;2027 年 1 月 25 日起,新版預設開啟。

Tunnel 新增網址正規化資訊圖卡:cloudflared 比對規則前先把網址整理乾淨,需要 Access 驗證的規則更安全

先用白話講:為什麼網址要先整理?

想像大樓警衛手上有一張名單:「要去 3 樓的人必須登記」。有人說:「我要去 2 樓再往上一層的地方。」警衛如果只看字面,只聽到「2 樓」,就可能放行,其實對方的目的地是 3 樓。比較好的做法,是先把路線化簡成「3 樓」,再對照名單。

網址也一樣。/hello/../path 看起來在 hello 底下,實際上等於 /path。網址正規化就是在比對規則前,先把這種繞來繞去的寫法化簡。

Cloudflare Tunnel 是讓自架服務透過 Cloudflare 對外發佈的工具,在你的主機上執行的程式叫 cloudflared。它的設定檔裡可以寫很多條 ingress 規則,依主機名稱和路徑決定請求要轉給哪個服務;Cloudflare Access 則是在服務前面加上一道登入驗證。

發生什麼事

  • Cloudflare 在 10 月 22 日的更新日誌宣布:從 cloudflared 2026.10.0 起,可以在比對 ingress 規則前先正規化網址
  • 官方說這能改善「有規則需要 Cloudflare Access 驗證」的 Tunnel 的安全性
  • 送到你的原站的網址路徑維持原樣,只有比對那一步用整理過的版本
  • 目前預設關閉;2027-01-25 起,新發佈的 cloudflared 會預設開啟
  • 沒有需要 Access 驗證規則的設定不受影響

會整理哪些寫法?

官方文件列出三種:移除 . 與 .. 路徑段(依 RFC 3986)、把反斜線換成正斜線、把重複的斜線合併成一個。

收到的路徑 比對規則時用的路徑 送到原站的路徑
/hello/../path /path /hello/../path
/hello//path /hello/path /hello//path
/hello\path /hello/path /hello\path

給開發者的技術細節

cloudflared tunnel --disable-path-normalization=false run <TUNNEL_NAME_OR_UUID>
  • 也可以在每個 cloudflared 副本設定環境變數 TUNNEL_DISABLE_PATH_NORMALIZATION=false,然後重新啟動
  • 旗標的名稱是 disable,所以設成 false 才是開啟,別看反了
  • 官方提醒:2027-01-25 之前要測試你的路徑式路由,因為這個改變可能影響請求命中哪一條 ingress 規則
  • 官方文件也說明,Access 會把 JWT(登入憑證)放在 Cf-Access-Jwt-Assertion 標頭送給 cloudflared,可以在公開主機名稱的服務上強制檢查

該不該現在開?

  • 有用路徑規則,又搭配 Access 驗證:現在就開,並確認自己的規則命中結果沒變
  • 沒有用到 Access 驗證規則:官方說不受影響,但預設開啟的日期可以先記下來
  • 一次管很多個 Tunnel:每個副本都要設定並重新啟動,別漏掉其中一台

我的看法

路徑這種東西,不同的環節對 ..、//、反斜線的理解常常不一樣:Cloudflare 看到的、cloudflared 看到的、後端框架看到的,可能各有各的版本。把「安全判斷」綁在路徑字串比對上,本來就容易出現縫隙,所以 Cloudflare 補這一層,我覺得方向是對的。

但也別因此覺得「開了就安全」。自架服務的人,最穩妥的做法還是讓後端自己也檢查登入狀態,不要只靠前面那一層比對。至於這次的功能,等於是官方先給你約三個月的緩衝:先開、再測、確認自己的規則沒被影響,到 2027 年預設開啟時就不會被打個措手不及。

名詞小辭典

  • Cloudflare Tunnel/cloudflared:讓自架服務透過 Cloudflare 對外發佈的工具;cloudflared 是跑在你主機上的程式。
  • Ingress 規則:cloudflared 設定檔裡的路由規則,依主機名稱和路徑決定請求轉給哪個服務。
  • Cloudflare Access:在網站或服務前面加上登入驗證,通過才放行的功能。
  • 網址正規化:把網址裡繞路、重複或不一致的寫法整理成標準形式,再拿去比對。

資料來源

常見問題

Cloudflare Tunnel 的 ingress 規則是什麼?
cloudflared 的設定檔裡,可以依主機名稱和路徑,把進來的請求分給不同的後端服務,最後一條通常是預設的 404 規則。這些規則就叫 ingress 規則。
網址正規化會改掉我送到後端的路徑嗎?
不會。官方說明,正規化只用在「比對 ingress 規則」這一步,送到原站的路徑維持原樣。例如 /hello/../path 比對時當成 /path,送到原站的仍是 /hello/../path。
要怎麼開啟網址正規化?
需要 cloudflared 2026.10.0 以上。執行時加上 --disable-path-normalization=false,或是在每個 cloudflared 副本設定環境變數 TUNNEL_DISABLE_PATH_NORMALIZATION=false 後重新啟動。旗標名稱是 disable,所以設成 false 才是開啟。
沒有用 Access 驗證的人需要處理嗎?
官方說沒有需要 Access 驗證規則的設定不受影響。不過 2027-01-25 起新版會預設開啟,建議你有路徑式路由的話,提早測試一輪。
LINE