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 點樣組織
| 範圍 | 那裡屬於什麼 |
|---|---|
server | Listeners, global limits, trusted proxy handling, and redirects. |
tls | Global TLS 後端 and compatibility policy. |
cache | Process-wide cache defaults and storage tiers. |
vhosts | Hostnames, routes, web roots, proxy settings, PHP, TLS, and access policy. |
metrics | Prometheus 和匯出偵聽器以實現操作可見性。 |
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-Status | RFC 9211 快取結果,例如命中、錯過、過時轉寄、重新驗證、到期同埋繞過。 |
Proxy-Status | RFC 9209 低基數詳情,用嚟顯示由 Fluxheim 產生嘅故障。 |
Content-Digest | 針對壓縮後最終 HTTP 訊息內容計算 RFC 9530 SHA-256。 |
Repr-Digest | 只有當 Fluxheim 保留完整嘅所選表示時,先會有 SHA-256 。 |
即時快照同回滾
經身份認證嘅快照可以發佈已驗證嘅候選設定、取代目前嘅路由器並執行回復,而唔使重新啟動一般嘅純路由部署。每個請求由開始到結束都會使用同一代路由器。
- 將快照存儲放喺專用嘅私人目錄入面;現有嘅非私人目錄同檔案系統根會被拒絕。
- 當背景負載平衡器健康或者發現服務啟用嗰陣,請使用進程升級。
- 喺發佈或者回滾之後執行快照完整性檢查,並確認所選版本喺重新啟動之後仍然保留。
安全習慣
- Run
fluxheim --check-configbefore 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 私有.