Resumo
Após uma reinicialização de rotina do contêiner (reinício do host / docker restart), o nginx falha ao iniciar dentro do contêiner app com a seguinte mensagem:
nginx: [emerg] unknown directive "brotli_static" in /etc/nginx/conf.d/discourse.conf:172
Isso derruba o site inteiro (sem fallback — o nginx nunca se vincula às portas 80/443) até que uma correção manual seja aplicada.
Ambiente
- Imagem base:
discourse/base:2.0.20260812-0036 - nginx:
1.26.3-3+deb13u7(pacote Debian 13/trixie, não compilado sob medida) libnginx-mod-http-brotli-static/-filter1.0.0~rc-6 estão instalados, e os links simbólicos em/etc/nginx/mods-enabled/*.conf(com as linhasload_modulecorretas) existem e apontam para arquivos.soválidos.
Causa raiz
O arquivo /etc/nginx/nginx.conf (propriedade do pacote nginx-common, inalterado) não possui a diretiva include /etc/nginx/modules-enabled/*.conf;, portanto os módulos Brotli instalados nunca são carregados — enquanto o discourse.conf (gerado pelos modelos do Discourse) ainda emite brotli_static on;, assumindo que eles estejam disponíveis.
Por que a falha não ocorre imediatamente
A configuração só é reanalisada quando o nginx realmente (re)inicia. Um contêiner recém-construído pode funcionar perfeitamente por dias/semanas até que algo reinicie o nginx (reinício do host, docker restart, OOM, etc.), momento em que ele começa a entrar em loop de falhas silenciosamente (~1×/seg) sem recuperação automática.
Solução alternativa (Workaround)
Adicione include /etc/nginx/modules-enabled/*.conf; como a primeira linha de /etc/nginx/nginx.conf (contexto principal, antes de events {}). Confirmou-se que isso restaura o sucesso do nginx -t e a operação normal.
Solicitação
A imagem base poderia (a) adicionar esse include ao seu nginx.conf, ou (b) remover brotli_static/brotli do modelo discourse.conf fornecido, caso o pacote nginx da distribuição não inclua mais suporte a Brotli por padrão?