Configuration Basics
Fluxheim koristi TOML. Nepoznata polja se odbijaju, pa tipfeleri padaju prije restarta.
Glavni oblik
[server]
listen = ["0.0.0.0:8080"]
default_vhost = "site"
[[vhosts]]
name = "site"
hosts = ["example.com"]
Za višekorisnička postavljanja omogućite [server.host_routing].strict = true kako bi nedostajući ili nevažeći identitet hosta vratio 400, a nepoznati hostovi 421 umjesto zadane stranice.
Kako je config organiziran
| Područje | Što tamo pripada |
|---|---|
server | Listeners, global limits, trusted proxy handling, and redirects. |
tls | Globalna TLS backend 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 listener za operativnu vidljivost. |
Oblik 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 ima jedan matcher i jednu action. Exact path pobjeđuje prvi, zatim najduži prefix, zatim regex route kada je regex support uključen, pa fallback route.
Sigurnost HTTP odgovora
HTTP sigurnosni profili odgovora su opcioni. Počnite s baseline; koristite izolaciju između porijekla samo nakon testiranja svake skripte, fonta, slike, toka prijave i ugrađenog resursa.
[headers.response.hardening]
profile = "baseline"
| Profil | Šta radi |
|---|---|
off | Ostavlja isključena zaglavlja za učvršćivanje. |
baseline | Dodaje konzervativnu izolaciju pretraživača i zadane postavke politike resursa prikladne za većinu web lokacija. |
cross-origin-isolated | Omogućava strogu izolaciju između izvora za aplikacije koje su testirale svaku eksternu zavisnost. |
Nijedan profil ne omogućava HSTS ili CSP. Konfigurišite ih zasebno nakon što ih testirate u odnosu na stvarnu lokaciju.
Metapodaci odgovora zasnovani na standardima
Metapodaci odgovora su podrazumevano onemogućeni. Omogućite samo polja koja su vam potrebna; Fluxheim ih izvodi iz stvarnog rezultata keširanja, greške proxyja i konačnih bajtova odgovora bez izlaganja ključeva keša, pozadinskih adresa, DNS imena ili sirovih grešaka.
[headers.response.metadata]
identifier = "edge-gateway"
cache_status = true
proxy_status = true
content_digest = true
repr_digest = true
| Polje | Šta izveštava |
|---|---|
Cache-Status | RFC 9211 ishodi keširanja kao što su pogodak, promašaj, zastarjelo prosljeđivanje, ponovna validacija, istek i zaobilaženje. |
Proxy-Status | RFC 9209 detalji niske kardinalnosti za kvarove koje generiše Fluxheim. |
Content-Digest | RFC 9530 SHA-256 preko konačnog sadržaja poruke HTTP nakon kompresije. |
Repr-Digest | SHA-256 samo kada Fluxheim drži kompletan odabrani prikaz. |
Snimci uživo i vraćanje
Ovjereni snimci mogu objaviti potvrđenog kandidata, zamijeniti aktivni ruter i vratiti se bez ponovnog pokretanja normalnih implementacija samo za usmjeravanje. Svaki zahtjev ostaje na jednoj generaciji rutera od početka do kraja.
- Čuvajte pohranu snimaka u namjenskom privatnom direktoriju; postojeći ne-privatni direktoriji i korijeni sistema datoteka su odbijeni.
- Koristite nadogradnju procesa kada su aktivne usluge zdravlja ili otkrivanja pozadinskog balansera opterećenja.
- Pokrenite provjere integriteta snimka nakon objavljivanja ili vraćanja i provjerite da li je odabrana generacija preživjela ponovno pokretanje.
Sigurne navike
- Run
fluxheim --check-configbefore reloads. - Koristi jedan vhost po site ili application boundary.
- Drži secret u file, environment ili container secrets, ne u public docs.
- Konfiguracijske datoteke i svaki postojeći nadređeni direktorij držite u pouzdanom vlasništvu, bez dozvole pisanja za grupu ili druge korisnike.
- Zamijenite proces kada se promijene postavke TLS-a, listenera, streamova, UDP-a, ACME-a, čišćenja cachea, tracinga ili upravljanog PHP-FPM procesa; obično usmjeravanje i pravila tokom zahtjeva mogu koristiti ponovno učitavanje snapshota.
- Koristi route-level limite za upload i skupe application path.
- Drži admin i metrics listener privatnima.