Fluxheim/文件/Configuration Basics

Configuration Basics

Fluxheim 使用 TOML。未知欄位會被拒絕,因此拼寫錯誤會在重啟前失敗。

主要結構

[server]
listen = ["0.0.0.0:8080"]
default_vhost = "site"

[[vhosts]]
name = "site"
hosts = ["example.com"]

對於 multi-tenant 部署,請啟用 [server.host_routing].strict = true。缺少或無效的 host identity 會回傳 400,未知 host 則回傳 421,而不會進入 default site。

設定如何組織

區域這裡放什麼
serverListeners, global limits, trusted proxy handling, and redirects.
tls全域 TLS backend 與相容性策略。
cacheProcess-wide cache defaults and storage tiers.
vhostsHostnames, routes, web roots, proxy settings, PHP, TLS, and access policy.
metrics用於運維可見性的 Prometheus 和 export listeners。

Route 結構

[[vhosts.routes]]
name = "app"
path_prefix = "/app/"
methods = ["GET", "HEAD", "POST"]
max_request_body_bytes = "16MiB"

[vhosts.routes.proxy]
upstreams = ["127.0.0.1:3000"]

一個 route 有一個 matcher 和一個 action。exact path 最先匹配,然後是最長 prefix;啟用 regex 時再匹配 regex route;最後是 fallback route。

HTTP 回應安全

HTTP 回應安全性設定檔是可選的。從baseline開始;僅在測試每個腳本、字體、映像、登入流程和嵌入資源後才使用跨來源隔離。

[headers.response.hardening]
profile = "baseline"
設定檔它的作用
off保持禁用選擇加入強化標頭。
baseline新增適合大多數網站的保守瀏覽器隔離和資源原則預設值。
cross-origin-isolated為已測試每個外部相依性的應用程式啟用嚴格的跨域隔離。

這兩個設定檔均不啟用 HSTS 或 CSP。在對真實網站進行測試後單獨配置它們。

基於標準的響應元數據

預設情況下會停用響應元資料。僅啟用您需要的欄位; Fluxheim 從實際快取結果、代理失敗和最終回應位元組中派生它們,而不會暴露快取金鑰、後端位址、DNS 名稱或原始錯誤。

[headers.response.metadata]
identifier = "edge-gateway"
cache_status = true
proxy_status = true
content_digest = true
repr_digest = true
欄位報告內容
Cache-StatusRFC 9211 快取結果,例如命中、未命中、過時轉送、重新驗證、過期和旁路。
Proxy-StatusRFC 9209 Fluxheim 產生的故障的低基數詳細資料。
Content-DigestRFC 9530 SHA-256 壓縮後最終的HTTP 訊息內容。
Repr-DigestSHA-256 僅當 Fluxheim 持有完整的選定表示時。

即時快照和回滾

經身分認證的快照可以發布已驗證的候選設定、取代目前的路由器並執行回復,而不必重新啟動一般的純路由部署。每個請求從開始到結束都使用同一代路由器。

  • 將快照儲存保存在專用的私有目錄中;現有的非私有目錄和檔案系統根被拒絕。
  • 當後台負載平衡器運作狀況或發現服務處於活動狀態時,使用進程升級。
  • 發布或回復後執行快照完整性檢查,並確認所選版本在重新啟動後仍然有效。
閱讀完整的快照運作規範

安全習慣

  • Run fluxheim --check-config before reloads.
  • 每個站點或應用邊界使用一個 vhost。
  • 將 secrets 放在檔案、環境變數或 container secrets 中,不要放在公共文件裡。
  • config file 及其每一層既有的父 directory 都應由可信任的主體擁有,且不得開放 group 或其他 user 寫入。
  • TLS、listener、stream、UDP、ACME、cache purge、tracing 或 managed PHP-FPM process 設定變更時,請替換 process;一般 routing 與 request-time policy 可以使用 snapshot reload。
  • 對上傳和昂貴應用路徑使用 route-level limits。
  • 保持 admin 和 metrics listeners 私有。
繁體中文