Configuration Basics
O Fluxheim usa TOML. Campos desconhecidos são rejeitados, por isso erros de escrita falham antes do restart.
Forma principal
[server]
listen = ["0.0.0.0:8080"]
default_vhost = "site"
[[vhosts]]
name = "site"
hosts = ["example.com"]
Em implementações multi-inquilino, ative [server.host_routing].strict = true para que uma identidade de anfitrião ausente ou inválida devolva 400 e anfitriões desconhecidos devolvam 421, em vez de chegarem ao site predefinido.
Como a config é organizada
| Área | O que pertence aí |
|---|---|
server | Listeners, global limits, trusted proxy handling, and redirects. |
tls | Backend TLS global e política de compatibilidade. |
cache | Process-wide cache defaults and storage tiers. |
vhosts | Hostnames, routes, web roots, proxy settings, PHP, TLS, and access policy. |
metrics | Prometheus e export listeners para visibilidade operacional. |
Forma da 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"]
Uma route tem um matcher e uma action. Exact paths ganham primeiro, depois prefixes mais longos, depois regex routes quando regex support está ativo, e por fim uma fallback route.
Segurança de resposta HTTP
Perfis de segurança de resposta HTTP são opcionais. Comece com baseline; use o isolamento de origem cruzada somente depois de testar cada script, fonte, imagem, fluxo de login e recurso incorporado.
[headers.response.hardening]
profile = "baseline"
| Perfil | O que isso faz |
|---|---|
off | Mantém os cabeçalhos de proteção opt-in desativados. |
baseline | Adiciona isolamento conservador do navegador e padrões de política de recursos adequados para a maioria dos sites. |
cross-origin-isolated | Permite isolamento estrito entre origens para aplicativos que testaram todas as dependências externas. |
Nenhum dos perfis permite HSTS ou CSP. Configure-os separadamente depois de testá-los no site real.
Metadados de resposta baseados em padrões
Os metadados de resposta estão desabilitados por padrão. Habilite apenas os campos necessários; Fluxheim os deriva do resultado real do cache, da falha do proxy e dos bytes de resposta finais sem expor chaves de cache, endereços de back-end, nomes DNS ou erros brutos.
[headers.response.metadata]
identifier = "edge-gateway"
cache_status = true
proxy_status = true
content_digest = true
repr_digest = true
| Campo | O que relata |
|---|---|
Cache-Status | Resultados de cache RFC 9211, como acerto, erro, encaminhamento obsoleto, revalidação, expiração e desvio. |
Proxy-Status | Detalhes de baixa cardinalidade de RFC 9209 para falhas geradas por Fluxheim. |
Content-Digest | RFC 9530 SHA-256 sobre o conteúdo final da mensagem HTTP após a compactação. |
Repr-Digest | SHA-256 somente quando Fluxheim contém a representação completa selecionada. |
Instantâneos ao vivo e reversão
Os snapshots autenticados podem publicar um candidato validado, substituir o roteador ativo e reverter sem reiniciar as implantações normais somente de roteamento. Cada solicitação permanece em uma geração de roteador do início ao fim.
- Mantenha o armazenamento de instantâneos em um diretório privado dedicado; diretórios não privados existentes e raízes do sistema de arquivos são rejeitados.
- Use uma atualização de processo quando os serviços de descoberta ou integridade do balanceador de carga em segundo plano estiverem ativos.
- Execute verificações de integridade de instantâneo após a publicação ou reversão e verifique se a geração selecionada sobrevive à reinicialização.
Hábitos seguros
- Run
fluxheim --check-configbefore reloads. - Use um vhost por site ou fronteira de aplicação.
- Mantenha secrets em ficheiros, ambiente ou container secrets, não em docs públicos.
- Mantenha os ficheiros de configuração e todos os diretórios superiores existentes sob propriedade de confiança e sem permissão de escrita para o grupo ou outros utilizadores.
- Substitua o processo quando forem alterados TLS, listeners, streams, UDP, ACME, limpeza da cache, rastreio ou definições de processos PHP-FPM geridos; o encaminhamento normal e as políticas aplicadas durante o pedido podem usar um recarregamento de snapshot.
- Use limites ao nível da route para uploads e paths de aplicação caros.
- Mantenha listeners admin e metrics privados.