Resumen
Después de un reinicio rutinario del contenedor (reinicio del host / docker restart), nginx falla al iniciar dentro del contenedor app con el siguiente error:
nginx: [emerg] unknown directive "brotli_static" in /etc/nginx/conf.d/discourse.conf:172
Esto deja toda la web fuera de línea (sin alternativa: nginx nunca se vincula a los puertos 80/443) hasta que se aplica un parche manualmente.
Entorno
- Imagen base:
discourse/base:2.0.20260812-0036 - nginx:
1.26.3-3+deb13u7(paquete de Debian 13/trixie, no compilado a medida) libnginx-mod-http-brotli-static/-filter1.0.0~rc-6 están instalados, y los enlaces simbólicos en/etc/nginx/mods-enabled/*.conf(con las líneas correctas deload_module) existen y apuntan a archivos.soválidos.
Causa raíz
/etc/nginx/nginx.conf (propiedad del paquete nginx-common, sin modificaciones) no tiene la directiva include /etc/nginx/modules-enabled/*.conf;, por lo que los módulos Brotli instalados nunca se cargan, mientras que discourse.conf (generado por las plantillas de Discourse) sigue emitiendo brotli_static on; asumiendo que sí se cargan.
Por qué no falla inmediatamente
La configuración solo se vuelve a analizar cuando nginx realmente se (re)inicia. Un contenedor recién reconstruido puede funcionar bien durante días o semanas hasta que algo reinicie nginx (reinicio del host, docker restart, OOM, etc.), momento en el que comienza a entrar en un bucle de errores silencioso (~1 vez/seg) sin recuperación automática.
Solución temporal
Agregar include /etc/nginx/modules-enabled/*.conf; como la primera línea de /etc/nginx/nginx.conf (contexto principal, antes de events {}). Se ha confirmado que esto restaura el éxito de nginx -t y el funcionamiento normal.
Solicitud
¿Podría la imagen base hacer una de las siguientes cosas: (a) agregar este include a su nginx.conf, o (b) eliminar brotli_static/brotli de la plantilla discourse.conf incluida si la compilación del paquete nginx de la distribución ya no incluye soporte para Brotli de forma predeterminada?