Fluxheim/Документация/Configuration Basics

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

ОбластьЧто туда относится
serverListeners, global limits, trusted proxy handling, and redirects.
tlsGlobal TLS backend и compatibility policy.
cacheProcess-wide cache defaults and storage tiers.
vhostsHostnames, routes, web roots, proxy settings, PHP, TLS, and access policy.
metricsPrometheus и 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-StatusRFC 9211 результаты кэширования, такие как попадание, промах, устаревшая пересылка, повторная проверка, истечение срока действия и обход.
Proxy-StatusПодробности RFC 9209 с низкой мощностью для сбоев, сгенерированных Fluxheim.
Content-DigestRFC 9530 SHA-256 поверх окончательного содержимого сообщения HTTP после сжатия.
Repr-DigestSHA-256 только тогда, когда Fluxheim содержит полное выбранное представление.

Живые снимки и откат

Снимки, прошедшие проверку подлинности, могут публиковать проверенного кандидата, заменять работающий маршрутизатор и выполнять откат без перезапуска обычных развертываний только с маршрутизацией. Каждый запрос от начала до конца остается в одном поколении маршрутизатора.

  • Храните хранилище снимков в выделенном частном каталоге; существующие нечастные каталоги и корни файловой системы отклоняются.
  • Используйте обновление процесса, когда фоновые службы балансировки нагрузки или обнаружения активны.
  • Запустите проверку целостности моментального снимка после публикации или отката и убедитесь, что выбранное поколение выдерживает перезапуск.
Прочитать полный контракт на моментальный снимок

Безопасные привычки

  • Run fluxheim --check-config before 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.
Русский