Configuration Basics
Fluxheim folosește TOML. Câmpurile necunoscute sunt respinse, deci greșelile de scriere eșuează înainte de restart.
Forma principală
[server]
listen = ["0.0.0.0:8080"]
default_vhost = "site"
[[vhosts]]
name = "site"
hosts = ["example.com"]
Pentru implementări multi-tenant, activați [server.host_routing].strict = true, astfel încât o identitate host absentă sau nevalidă să returneze 400, iar gazdele necunoscute să returneze 421 în loc să ajungă la site-ul implicit.
Cum este organizat configul
| Zonă | Ce aparține acolo |
|---|---|
server | Listeners, global limits, trusted proxy handling, and redirects. |
tls | Backend TLS global ș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 pentru vizibilitate operațională. |
Forma route-ului
[[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"]
Un route are un matcher și o action. Exact paths câștigă primele, apoi cele mai lungi prefixe, apoi regex routes când regex support este activ, apoi un fallback route.
Securitatea răspunsului HTTP
Profilurile HTTP de securitate a răspunsului sunt opționale. Începeți cu baseline; utilizați izolarea între origini numai după testarea fiecărui script, font, imagine, flux de conectare și resursă încorporată.
[headers.response.hardening]
profile = "baseline"
| Profil | Ce face |
|---|---|
off | Menține anteturile de întărire opt-in dezactivate. |
baseline | Adaugă izolarea conservatoare a browserului și valorile implicite ale politicii de resurse, potrivite pentru majoritatea site-urilor. |
cross-origin-isolated | Permite izolarea strictă între origini pentru aplicațiile care au testat fiecare dependență externă. |
Niciun profil nu activează HSTS sau CSP. Configurați-le separat după ce le testați pe site-ul real.
Metadate de răspuns bazate pe standarde
Metadatele răspunsului sunt dezactivate implicit. Activați numai câmpurile de care aveți nevoie; Fluxheim le derivă din rezultatul real al memoriei cache, eșecul proxy-ului și octeții de răspuns final, fără a expune cheile cache, adresele backend, numele DNS sau erorile brute.
[headers.response.metadata]
identifier = "edge-gateway"
cache_status = true
proxy_status = true
content_digest = true
repr_digest = true
| Câmp | Ce raportează |
|---|---|
Cache-Status | RFC 9211 rezultate ale memoriei cache, cum ar fi lovitura, ratarea, redirecționarea obținută, revalidarea, expirarea și ocolirea. |
Proxy-Status | RFC 9209 detalii cu cardinalitate scăzută pentru eșecurile generate de Fluxheim. |
Content-Digest | RFC 9530 SHA-256 peste conținutul final al mesajului HTTP după comprimare. |
Repr-Digest | SHA-256 numai atunci când Fluxheim deține reprezentarea completă selectată. |
Instantanee live și rollback
Instantaneele autentificate pot publica un candidat validat, pot înlocui routerul live și pot rula înapoi fără a reporni implementările normale de rutare. Fiecare cerere rămâne pe o generație de router de la început până la sfârșit.
- Păstrați magazinul de instantanee într-un director privat dedicat; directoarele non-private existente și rădăcinile sistemului de fișiere sunt respinse.
- Utilizați o actualizare a procesului atunci când serviciile de descoperire sau starea de echilibrare a încărcării în fundal sunt active.
- Rulați verificări de integritate a instantaneelor după publicare sau derulare înapoi și verificați că generația selectată supraviețuiește repornirii.
Obiceiuri sigure
- Run
fluxheim --check-configbefore reloads. - Folosește un vhost pentru fiecare site sau boundary de aplicație.
- Ține secretele în file-uri, environment sau container secrets, nu în documentație publică.
- Păstrați fișierele de configurare și fiecare director părinte existent sub proprietate de încredere și fără drept de scriere pentru grup sau alți utilizatori.
- Înlocuiți procesul când se schimbă setările TLS, listener, stream, UDP, ACME, curățarea cache, tracing sau procesul PHP-FPM gestionat; rutarea obișnuită și politicile aplicate în timpul cererii pot folosi reîncărcarea unui snapshot.
- Folosește limite la nivel de route pentru upload-uri și application paths scumpe.
- Ține admin și metrics listeners private.