Configuration Basics
Fluxheim utilise TOML. Les champs inconnus sont rejetés, donc les fautes de frappe échouent avant le redémarrage.
Structure principale
[server]
listen = ["0.0.0.0:8080"]
default_vhost = "site"
[[vhosts]]
name = "site"
hosts = ["example.com"]
Pour les déploiements mutualisés, activez [server.host_routing].strict = true afin qu’une identité d’hôte absente ou non valide renvoie 400 et qu’un hôte inconnu renvoie 421, au lieu d’atteindre le site par défaut.
Organisation de la configuration
| Zone | Ce qui y va |
|---|---|
server | Listeners, global limits, trusted proxy handling, and redirects. |
tls | Politique globale de backend TLS et de compatibilite. |
cache | Process-wide cache defaults and storage tiers. |
vhosts | Hostnames, routes, web roots, proxy settings, PHP, TLS, and access policy. |
metrics | Listeners Prometheus et d'export pour la visibilite operationnelle. |
Forme d'une 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"]
Une route a un matcher et une action. Les chemins exacts gagnent d'abord, puis les plus longs prefixes, puis les routes regex quand regex est active, puis une route de repli.
Sécurité des réponses HTTP
Les profils de sécurité de réponse HTTP sont facultatifs. Commencez par baseline ; utilisez l’isolation multi-origine uniquement après avoir testé chaque script, police, image, flux de connexion et ressource intégrée.
[headers.response.hardening]
profile = "baseline"
| Profil | Ce que ça fait |
|---|---|
off | Maintient les en-têtes de renforcement opt-in désactivés. |
baseline | Ajoute une isolation conservatrice du navigateur et des paramètres par défaut de stratégie de ressources adaptés à la plupart des sites. |
cross-origin-isolated | Permet une isolation stricte entre origines pour les applications qui ont testé chaque dépendance externe. |
Aucun des deux profils n’active HSTS ou CSP. Configurez-les séparément après les avoir testés sur le site réel.
Métadonnées de réponse basées sur des normes
Les métadonnées de réponse sont désactivées par défaut. Activez uniquement les champs dont vous avez besoin ; Fluxheim les dérive du résultat réel du cache, de l'échec du proxy et des octets de réponse finaux sans exposer les clés de cache, les adresses back-end, les noms DNS ou les erreurs brutes.
[headers.response.metadata]
identifier = "edge-gateway"
cache_status = true
proxy_status = true
content_digest = true
repr_digest = true
| Champ de réponse | Information signalée |
|---|---|
Cache-Status | Résultats du cache RFC 9211 tels que les succès, les échecs, les transferts obsolètes, la revalidation, l'expiration et le contournement. |
Proxy-Status | Détails de faible cardinalité RFC 9209 pour les échecs générés par Fluxheim. |
Content-Digest | RFC 9530 SHA-256 sur le contenu final du message HTTP après compression. |
Repr-Digest | SHA-256 uniquement lorsque Fluxheim contient la représentation sélectionnée complète. |
Instantanés en direct et restauration
Les instantanés authentifiés permettent de publier un candidat validé, de remplacer le routeur actif et de revenir à la génération précédente sans redémarrer les déploiements limités au routage. Chaque requête utilise la même génération de routeur du début à la fin.
- Conservez les instantanés dans un répertoire privé dédié ; les répertoires existants non privés et les racines de systèmes de fichiers sont rejetés.
- Utilisez une mise à niveau de processus lorsque les contrôles d'état ou les services de découverte de l'équilibreur de charge fonctionnent en arrière-plan.
- Exécutez des vérifications de l’intégrité des instantanés après la publication ou la restauration et vérifiez que la génération sélectionnée survit au redémarrage.
Bonnes habitudes sûres
- Run
fluxheim --check-configbefore reloads. - Utilisez un vhost par site ou frontière applicative.
- Gardez les secrets dans des fichiers, l'environnement ou des secrets conteneur, pas dans la documentation publique.
- Conservez les fichiers de configuration et tous leurs répertoires parents existants sous une propriété de confiance, sans droit d’écriture pour le groupe ni pour les autres utilisateurs.
- Remplacez le processus lorsque TLS, les écouteurs, les flux, UDP, ACME, la purge du cache, le traçage ou les paramètres des processus PHP-FPM gérés changent; le routage ordinaire et les politiques appliquées au moment de la requête peuvent utiliser un rechargement d’instantané.
- Utilisez des limites par route pour les uploads et les chemins applicatifs couteux.
- Gardez les listeners admin et metriques prives.