Fixação de versão do Nginx

Não é bem um Bug, mas não está claro em qual outra categoria isso deveria ser colocado. É problemático e não é um Feature. Possivelmente Support, mas tenho quase certeza do que estou fazendo aqui.

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

Um pentest de rotina esta semana descobriu que a versão do NGINX em uso estava EOL (fim de vida). Não foi possível explorá-la, mas foi sinalizada como precisando 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 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 EOL em primeiro lugar? Existe alguma justificativa que eu não esteja ciente?

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

Geralmente, o Discourse parece ser bem empenhado 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 soluções alternativas 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