# Nginx entra em loop de crash após reiniciar o container: a imagem base inclui brotli\_static no discourse.conf, mas nunca carrega o módulo (diretiva desconhecida)

**URL:** https://meta.discourse.org/t/nginx-crash-loops-after-container-restart-base-image-ships-brotli-static-in-discourse-conf-but-never-loads-the-module-unknown-directive/410530
**Category:** Bug
**Tags:** nginx
**Created:** [20 Agosto , 2026 13:57 UTC](https://meta.discourse.org/t/nginx-crash-loops-after-container-restart-base-image-ships-brotli-static-in-discourse-conf-but-never-loads-the-module-unknown-directive/410530 "2026-08-20T13:57:21Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![oxFilla](https://avatars.discourse-cdn.com/v4/letter/o/c68b51/32.png) [@oxFilla](https://meta.discourse.org/u/oxFilla)
#### Post date: [20 Agosto , 2026 13:57 UTC](https://meta.discourse.org/t/nginx-crash-loops-after-container-restart-base-image-ships-brotli-static-in-discourse-conf-but-never-loads-the-module-unknown-directive/410530/1 "2026-08-20T13:57:22Z")

</div>

**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:

```plaintext
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`/`-filter` 1.0.0~rc-6 estão instalados, e os links simbólicos em `/etc/nginx/mods-enabled/*.conf` (com as linhas `load_module` corretas) existem e apontam para arquivos `.so` vá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?

---

_[View the full topic](https://meta.discourse.org/t/nginx-crash-loops-after-container-restart-base-image-ships-brotli-static-in-discourse-conf-but-never-loads-the-module-unknown-directive/410530)._
