Configuration Basics
Fluxheim używa TOML. Nieznane pola są odrzucane, więc literówki zawodzą przed restartem.
Główna forma
[server]
listen = ["0.0.0.0:8080"]
default_vhost = "site"
[[vhosts]]
name = "site"
hosts = ["example.com"]
W przypadku wdrożeń wielodostępnych włącz [server.host_routing].strict = true, aby brakująca lub nieprawidłowa tożsamość hosta zwracała 400, a nieznane hosty 421 zamiast domyślnej witryny.
Jak zorganizowany jest config
| Obszar | Co tam należy |
|---|---|
server | Listeners, global limits, trusted proxy handling, and redirects. |
tls | Globalny backend TLS i compatibility policy. |
cache | Process-wide cache defaults and storage tiers. |
vhosts | Hostnames, routes, web roots, proxy settings, PHP, TLS, and access policy. |
metrics | Prometheus i export listeners dla operational visibility. |
Forma 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 ma jeden matcher i jedną action. Exact paths wygrywają pierwsze, potem najdłuższe prefixy, potem regex routes, gdy regex support jest włączony, a na końcu fallback route.
Bezpieczeństwo odpowiedzi HTTP
Profile zabezpieczeń odpowiedzi HTTP są opcjonalne. Zacznij od baseline; używaj izolacji między źródłami dopiero po przetestowaniu każdego skryptu, czcionki, obrazu, przepływu logowania i zasobu osadzonego.
[headers.response.hardening]
profile = "baseline"
| Profil | Co to robi |
|---|---|
off | Powoduje, że nagłówki wzmacniające zgodę są wyłączone. |
baseline | Dodaje konserwatywne ustawienia izolacji przeglądarki i polityki zasobów odpowiednie dla większości witryn. |
cross-origin-isolated | Umożliwia ścisłą izolację między źródłami dla aplikacji, które przetestowały każdą zależność zewnętrzną. |
Żaden profil nie umożliwia HSTS ani CSP. Skonfiguruj je osobno po przetestowaniu ich w rzeczywistej witrynie.
Metadane odpowiedzi oparte na standardach
Metadane odpowiedzi są domyślnie wyłączone. Włącz tylko te pola, których potrzebujesz; Fluxheim wyprowadza je z rzeczywistego wyniku pamięci podręcznej, awarii serwera proxy i końcowych bajtów odpowiedzi bez ujawniania kluczy pamięci podręcznej, adresów zaplecza, nazw DNS ani nieprzetworzonych błędów.
[headers.response.metadata]
identifier = "edge-gateway"
cache_status = true
proxy_status = true
content_digest = true
repr_digest = true
| Pole | Co raportuje |
|---|---|
Cache-Status | Wyniki pamięci podręcznej RFC 9211, takie jak trafienie, chybienie, nieaktualne przekazywanie, ponowna weryfikacja, wygaśnięcie i obejście. |
Proxy-Status | RFC 9209 Szczegóły niskiej kardynalności dla błędów generowanych przez Fluxheim. |
Content-Digest | RFC 9530 SHA-256 nad końcową treścią komunikatu HTTP po kompresji. |
Repr-Digest | SHA-256 tylko wtedy, gdy Fluxheim zawiera pełną wybraną reprezentację. |
Migawki na żywo i przywracanie
Uwierzytelnione migawki mogą opublikować zweryfikowanego kandydata, zastąpić działający router i przywrócić działanie bez ponownego uruchamiania normalnych wdrożeń obejmujących wyłącznie routing. Każde żądanie pozostaje na jednej generacji routera od początku do końca.
- Przechowuj magazyn migawek w dedykowanym katalogu prywatnym; istniejące nieprywatne katalogi i katalogi główne systemu plików są odrzucane.
- Użyj uaktualnienia procesu, gdy usługi kondycji lub wykrywania modułu równoważenia obciążenia w tle są aktywne.
- Uruchom sprawdzanie integralności migawki po publikacji lub wycofaniu i sprawdź, czy wybrana generacja przetrwała ponowne uruchomienie.
Bezpieczne nawyki
- Run
fluxheim --check-configbefore reloads. - Użyj jednego vhost dla strony lub application boundary.
- Trzymaj sekrety w plikach, environment albo container secrets, nie w public docs.
- Pliki konfiguracyjne i wszystkie istniejące katalogi nadrzędne muszą należeć do zaufanego właściciela i nie mogą być zapisywalne przez grupę ani innych użytkowników.
- Zastąp proces po zmianie ustawień TLS, listenerów, streamów, UDP, ACME, czyszczenia cache, tracingu lub zarządzanego procesu PHP-FPM; zwykłe trasowanie i reguły stosowane podczas żądania mogą skorzystać z ponownego wczytania snapshotu.
- Używaj limitów route-level dla uploadów i kosztownych application paths.
- Trzymaj admin i metrics listeners private.