Configuration Basics
Fluxheim использует TOML. Unknown fields отклоняются, поэтому опечатки падают до restart.
Основная форма
[server]
listen = ["0.0.0.0:8080"]
default_vhost = "site"
[[vhosts]]
name = "site"
hosts = ["example.com"]
Для многопользовательских развёртываний включите [server.host_routing].strict = true, чтобы при отсутствующей или недопустимой идентичности host возвращался код 400, а для неизвестных hosts — 421 вместо сайта по умолчанию.
Как организована config
| Область | Что туда относится |
|---|---|
server | Listeners, global limits, trusted proxy handling, and redirects. |
tls | Global TLS backend и compatibility policy. |
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. |
Форма 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 имеет один matcher и одно action. Сначала выигрывают exact paths, затем longest prefixes, затем regex routes при включенной regex support, затем fallback route.
Безопасность 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. - Используйте один vhost на сайт или application boundary.
- Держите secrets в files, environment или container secrets, а не в public docs.
- Конфигурационные файлы и все существующие родительские каталоги должны принадлежать доверенному владельцу и быть недоступны для записи группе и другим пользователям.
- Заменяйте процесс при изменении настроек TLS, listeners, streams, UDP, ACME, очистки cache, tracing или управляемого процесса PHP-FPM; для обычной маршрутизации и правил обработки запросов достаточно перезагрузки snapshot.
- Используйте route-level limits для uploads и дорогих application paths.
- Держите admin и metrics listeners private.