Configuration Basics
Fluxheim використовує TOML. Unknown fields відхиляються, тому помилки spelling fail перед restart.
Основна форма
[server]
listen = ["0.0.0.0:8080"]
default_vhost = "site"
[[vhosts]]
name = "site"
hosts = ["example.com"]
Для multi-tenant deployments увімкніть [server.host_routing].strict = true: відсутня або недійсна host identity повертатиме 400, а невідомі hosts — 421 замість переходу до default site.
Як організовано config
| Область | Що належить сюди |
|---|---|
server | Listeners, global limits, trusted proxy handling, and redirects. |
tls | Global TLS backend і compatibility політика. |
cache | Process-wide cache defaults and storage tiers. |
vhosts | Hostnames, routes, web roots, proxy settings, PHP, TLS, and access policy. |
metrics | Prometheus і export listeners для operational visibility. |
Форма маршруту
[[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"]
Маршрут має одну умову зіставлення та одну дію. Спочатку перемагають точні шляхи, потім найдовші префікси, далі regex-маршрути, якщо їх підтримку ввімкнено, і нарешті один резервний маршрут.
Безпека відповіді 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 | RFC 9530 SHA-256 над остаточним вмістом повідомлення HTTP після стиснення. |
Repr-Digest | SHA-256 лише тоді, коли Fluxheim містить повне вибране представлення. |
Живі знімки та відкат
Автентифіковані знімки можуть опублікувати підтвердженого кандидата, замінити поточний маршрутизатор і виконати відкат без перезапуску звичайних розгортань лише з маршрутизацією. Кожен запит залишається на одній генерації маршрутизатора від початку до кінця.
- Зберігайте сховище знімків у спеціальному приватному каталозі; існуючі неприватні каталоги та корені файлової системи відхиляються.
- Використовуйте оновлення процесу, коли фонові служби балансування навантаження справності або виявлення активні.
- Запустіть перевірку цілісності знімка після публікації або відкоту та переконайтеся, що вибране покоління переживе перезапуск.
Безпечні звички
- Run
fluxheim --check-configbefore reloads. - Use one vhost per сайт або application boundary.
- Keep секрети in файли, environment, або контейнер секрети, not in публічний docs.
- Зберігайте config files і всі наявні parent directories під довіреною ownership та без права запису для group або інших users.
- Замінюйте process після змін TLS, listeners, streams, UDP, ACME, cache purging, tracing або managed PHP-FPM process settings; для звичайного routing і request-time policy можна використовувати snapshot reload.
- Використовуйте обмеження на рівні маршруту для завантажень і ресурсомістких шляхів застосунку.
- Keep admin і метрики listeners приватний.