Nginxのバージョン固定

完全に #contribute:bug というカテゴリには当てはまらないが、どのカテゴリに分類すべきか明確でない。問題のある事象ではあるものの、#contribute:feature とも言い難い。おそらく #support だろうか。ただし、私はここで何をしているのかだいたい把握している自信がある。

関連: 3年前に投稿された同様の投稿 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 時点の最新)ではないのか?これもまた、何か理由があるのか?

一般的に 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