Nginx 版本固定

这算不上是 Bug,但也不清楚应该归入哪个类别。它确实是个问题,但不是 #feature。可能是 Support,但我相当确定我在这里知道该怎么做。

另请参阅:三年前一篇类似的帖子 Dockerfile in official install instructions uses unsupported version of Nginx

本周例行的渗透测试发现使用的 NGINX 版本已 EOL(生命周期结束)。虽然无法利用它,但它已被标记为需要尽快修复。

通过 git pull 尝试更新 Discourse 仍未解决问题,因为尽管 Discourse Docker 仓库已更新,但模板仍将基础镜像固定为前一个版本 (discourse/base:2.0.20260109-0020)。

一些问题:

  • 为什么固定的 NGINX 版本会如此之旧以至于 EOL?是否有我不知道的理由?

  • 为什么选择新版本为 1.28.1,而不是 1.29.4(截至 2026.01.27 的最新版本)(https://endoflife.date/nginx)——同样是否有理由?

总的来说,Discourse 似乎非常热衷于让所有用户都使用最新版本(这似乎是合理的),即以前的 tests-passed

我如何才能更新 NGINX(最好不要使用本地的变通方法)?

1 个赞

没有特别的原因,只是我们有一段时间没有进行更新过程了。你说得对,我们理想情况下应该在它 EOL 之前发现这个问题。

1.28.1 是最新的“稳定”版本,所以我们选择了它。1.29.x 是变化更快的“主线”版本,我们目前不需要那些新功能。

感谢提出这个问题。我们现在已经完成了在模板中提升标签的操作,所以再次运行 ./launcher rebuild app 应该就能得到新的 nginx 版本了。

6 个赞

没问题,感谢 @david 快速回复!

遗憾的是,这似乎仍然不起作用。运行 git pull,然后 ./launcher rebuild app 确实拉取了一个新镜像(discourse/base:2.0.20260116-2039),但该镜像似乎仍然包含 nginx 1.26.3:

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

我正在从我这边排查,以防这是某种奇怪的容器缓存问题,但据我所知,问题在于那个 20260116-2039 基础镜像仍然包含 NGINX 1.26.3。

1 个赞

有趣,我看到了同样的情况。虽然我们在配置文件中更新了 NGINX,但看起来镜像的升级可能是专门为了升级 Redis,而不是 NGINX。

我将与团队核实,看看是否可以固定一个更新的镜像版本。

4 个赞

关于 NGINX 版本固定的问题有任何更新吗?我看到了 2026.1.0-latest 版本的发布,但据我所知,它没有升级基础镜像。

我们刚刚再次更新了镜像:Bump base image to `20260129-0023` (#1035) · discourse/discourse_docker@068819b · GitHub

所以下一次重建应该会为您提供 NGINX 1.28.1

3 个赞

谢谢 @david,现在可以正常工作了。

1 个赞