Fijación de versión de Nginx

No es exactamente un Bug, pero no está claro en qué otra categoría debería ir. Es problemático y no es una Feature. Posiblemente Support, pero estoy bastante seguro de lo que estoy haciendo aquí.

Véase también: una publicación similar de hace 3 años Dockerfile in official install instructions uses unsupported version of Nginx

Una prueba de penetración rutinaria esta semana encontró que la versión de NGINX que se estaba utilizando estaba EOL (Fin de Vida). No fue posible explotarla, pero se marcó como que necesitaba ser corregida lo antes posible.

Intentar actualizar Discourse a través de git pull todavía no ha solucionado el problema, porque aunque el repositorio de Discourse Docker está actualizado, las plantillas fijan la imagen base como la versión anterior (discourse/base:2.0.20260109-0020)

Algunas preguntas:

  • ¿Por qué la versión fijada de NGINX era tan antigua como para estar EOL en primer lugar? ¿Hay alguna razón que no conozca?

  • ¿Por qué se ha elegido la nueva versión como 1.28.1, y no 1.29.4 (la más reciente a fecha de 2026.01.27)? ¿De nuevo, hay alguna razón?

En general, Discourse parece muy interesado en mantener a todos los usuarios en una versión reciente (lo cual parece sensato), es decir, lo que era tests-passed.

¿Cómo consigo actualizar NGINX (idealmente sin soluciones alternativas locales)?

1 me gusta

No hay ninguna razón específica, es solo que no habíamos pasado por el proceso de actualización en un tiempo. Tiene razón en que idealmente deberíamos haber detectado esto antes de que llegara al EOL.

1.28.1 es la última versión ‘estable’, así que elegimos esa. 1.29.x es la versión ‘principal’ con mayor rotación, y actualmente no necesitamos ninguna de esas nuevas características.

Gracias por señalarlo. Ahora hemos terminado de actualizar la etiqueta en las plantillas, por lo que ejecutar otro ./launcher rebuild app debería darle la nueva versión de nginx.

6 Me gusta

No hay problema y gracias por la rápida respuesta @david!

Lamentablemente, esto todavía no parece estar funcionando. Ejecutar un git pull, y luego ./launcher rebuild app sí descargó una nueva imagen (discourse/base:2.0.20260116-2039), pero la imagen parece seguir incluyendo nginx 1.26.3:

root@server:/var/discourse# docker exec -it app nginx -v
nginx version: nginx/1.26.3

Estoy investigando por mi parte por si se trata de algún problema extraño de almacenamiento en caché del contenedor, pero por lo que puedo ver, es simplemente que esa imagen base 20260116-2039 todavía contiene NGINX 1.26.3.

1 me gusta

Interesante, estoy viendo lo mismo. Si bien hemos actualizado NGINX en la configuración, parece que el aumento de la imagen pudo haber sido específicamente para aumentar Redis y no NGINX.

Consultaré con el equipo y veré si podemos fijar una versión de imagen aún más nueva.

4 Me gusta

¿Alguna novedad sobre el problema de fijación de la versión de NGINX? Vi un lanzamiento de 2026.1.0-latest, pero por lo que tengo entendido, eso no actualiza la imagen base.

Acabamos de actualizar la imagen de nuevo: Bump base image to `20260129-0023` (#1035) · discourse/discourse_docker@068819b · GitHub

Así que la próxima reconstrucción debería darte NGINX 1.28.1

3 Me gusta

Gracias @david, eso ya está funcionando.

1 me gusta