Fixação da versão do Nginx

Não é exatamente um Contribute > Bug, mas não está claro em qual outra categoria ele se encaixa. É um problema e não se trata de um Contribute > Feature. Talvez Support, mas tenho certeza razoável de que sei o que estou fazendo aqui.

Veja também: uma publicação semelhante de 3 anos atrás Dockerfile in official install instructions uses unsupported version of Nginx

Uma auditoria de segurança (pentest) de rotina realizada esta semana descobriu que a versão do NGINX em uso chegou ao fim do suporte (EOL). Não foi possível explorá-la, mas ela foi sinalizada como necessitando de correção o mais rápido possível.

Tentar atualizar o Discourse via git pull ainda não resolveu o problema, porque embora o repositório Docker do Discourse tenha sido atualizado, os modelos (templates) fixam a imagem base como a versão anterior (discourse/base:2.0.20260109-0020).

Algumas perguntas:

  • Por que a versão fixada do NGINX era tão antiga a ponto de estar em fim de suporte (EOL) desde o início? Existe alguma justificativa que eu não conheço?

  • Por que a nova versão foi escolhida como 1.28.1 e não 1.29.4 (mais recente em 27/01/2026) — novamente, há alguma justificativa?

De modo geral, o Discourse parece bastante interessado em manter todos os usuários em uma versão recente (o que parece sensato), ou seja, o que era tests-passed.

Como faço para atualizar o NGINX (idealmente sem precisar de gambiarras locais)?

1 curtida

Não há nenhuma razão específica, é apenas que não tínhamos passado pelo processo de atualização há algum tempo. Você está certo de que idealmente deveríamos ter percebido isso antes de atingir o EOL.

A 1.28.1 é a versão ‘estável’ mais recente, então optamos por ela. A 1.29.x é a versão ‘mainline’ com maior rotatividade, e atualmente não precisamos de nenhuma dessas novas funcionalidades.

Obrigado por levantar isso. Agora terminamos de atualizar a tag nos templates, então executar outro ./launcher rebuild app deve fornecer a nova versão do nginx.

6 curtidas

Sem problemas e obrigado pela resposta rápida @david!

Infelizmente, isso ainda não parece estar funcionando. Executar um git pull, seguido de ./launcher rebuild app puxou uma nova imagem (discourse/base:2.0.20260116-2039), mas a imagem parece ainda incluir o nginx 1.26.3:

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

Estou investigando por aqui, caso seja algum problema estranho de cache do contêiner, mas até onde sei, é simplesmente que aquela imagem base 20260116-2039 ainda contém o NGINX 1.26.3.

1 curtida

Interessante, estou vendo o mesmo. Embora tenhamos atualizado o NGINX na configuração, parece que a atualização da imagem pode ter sido especificamente destinada a atualizar o Redis, e não o NGINX.

Vou verificar com a equipe e ver sobre fixar uma versão de imagem ainda mais recente.

4 curtidas

Alguma atualização sobre o problema de fixação da versão do NGINX? Eu vi um lançamento de 2026.1.0-latest, mas até onde sei, isso não atualiza a imagem base.

Acabamos de atualizar a imagem novamente: Bump base image to `20260129-0023` (#1035) · discourse/discourse_docker@068819b · GitHub

Assim, a próxima reconstrução deve fornecer o NGINX 1.28.1 para você.

3 curtidas

Obrigado @david, isso está funcionando agora.

1 curtida