Fluxheim/文件/Configuration Basics

Configuration Basics

Fluxheim 使用 TOML。未知 field 會被拒絕,所以拼寫錯誤會喺 restart 前被發現。

主要形狀

[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。

config 點樣組織

範圍那裡屬於什麼
serverListeners, global limits, trusted proxy handling, and redirects.
tlsGlobal TLS 後端 and compatibility policy.
cacheProcess-wide cache defaults and storage tiers.
vhostsHostnames, routes, web roots, proxy settings, PHP, TLS, and access policy.
metricsPrometheus 和匯出偵聽器以實現操作可見性。

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 會先 match, then longest prefixes, then regex routes when regex support is enabled, then one 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-Digest針對壓縮後最終 HTTP 訊息內容計算 RFC 9530 SHA-256。
Repr-Digest只有當 Fluxheim 保留完整嘅所選表示時,先會有 SHA-256 。

即時快照同回滾

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

  • 將快照存儲放喺專用嘅私人目錄入面;現有嘅非私人目錄同檔案系統根會被拒絕。
  • 當背景負載平衡器健康或者發現服務啟用嗰陣,請使用進程升級。
  • 喺發佈或者回滾之後執行快照完整性檢查,並確認所選版本喺重新啟動之後仍然保留。
睇完整嘅快照運作規範

安全習慣

  • Run fluxheim --check-config before reloads.
  • 每個網站或應用程式邊界使用一個虛擬主機。
  • secrets 放喺 files、environment 或 container secrets,唔好放喺 public docs。
  • config file 同每一層已存在嘅上層 directory 都要由可信任嘅擁有者管理,亦唔可以畀 group 或其他 user 寫入。
  • TLS、listener、stream、UDP、ACME、cache purge、tracing 或 managed PHP-FPM process 設定有變時,要替換 process;一般 routing 同 request-time policy 可以用 snapshot reload。
  • 對上傳和昂貴的應用程式路徑使用路由等級限制。
  • Keep admin and 指標 listeners 私有.
粵語