NGINX Plus Release 32(R32)の提供を開始することをお知らせします。NGINX PlusはNGINXオープンソースをベースにした唯一のオールインワンソフトウェアWebサーバー、ロードバランサー、リバースプロキシ、コンテンツキャッシュ、およびAPIゲートウェイです。
NGINX Plus R32の新機能および拡張機能は以下の通りです。
このリリースの最後を締めくくるのは、NGINXオープンソースから継承された新機能とバグ修正、およびNGINX JavaScriptモジュールの更新です。
注:NGINX Plus R31以外のリリースからアップグレードする場合、使用しているバージョンのリリースから今回のリリースまでのすべてのリリースについて、以前のアナウンスブログの「動作における重要な変更点」セクションを必ず確認してください。
NGINX Plus R18で導入されたOpenTracingモジュールが廃止されます。NGINX Plus R34のリリースから削除される予定です。これらに関連するパッケージはそれまでは、すべてのNGINX Plusリリースで利用できますが、OpenTracingモジュールではなく、NGINX Plus R29で導入されたOpenTelemetryモジュールを使用することを強くお勧めします。
ModSecurityモジュールは2024年3月31日にサポート終了となりました。その結果、modSecurityパッケージは、NGINX Plusリポジトリから削除され、今後NGINX Plusリポジトリからは入手できなくなります。
NGINXオープンソースとNGINX Plusパッケージは、PGP鍵を使って署名されています。この鍵は2024年6月16日に有効期限が切れます。2024年6月16日以降も既存のパッケージが署名されるように鍵の有効期限を更新しました。今後リリースされるパッケージについては、新しい鍵ペアを生成して署名する予定です。
NGINXユーザーは必ず、以下の手順に従い、更新されたPGP鍵をダウンロードし、インストールしてください。
Ubuntu/Debianの場合:
wget -qO - https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
On RHEL/CentOS:
sudo rpm -e gpg-pubkey-7bd9bf62-5762b5f8
sudo rpm --import https://nginx.org/keys/nginx_signing.key
2024年6月16日以降、PGP鍵を更新するまで、ソフトウェア署名を検証できなくなります。
今後のNGINX Plusのリリースでは、パッケージングとリリースポリシーを合理化する予定です。NGINX Plusは、サポート対象のOSディストリビューションの最新バージョンのみでビルドおよびテストされます。NGINX Plusを古いディストリビューションにインストールする場合、パッケージマネージャにより、依存するライブラリやパッケージのアップデートを推奨されるかもしれません。
本リリースでは、サポート対象のプラットフォームに以下の変更が加えられました。
以下のオペレーティングシステムが新たにサポートされます。
以下のオペレーティングシステムはサポート対象外となります。
以下のオペレーティングシステムはNGINX Plus R33でサポート対象外となる予定です。
これまでNGINXでは、証明書、鍵または証明書失効リストは、NGINX構成で参照されるたびにロードされていました。つまり、同じオブジェクトを複数回参照すると、その分だけそのオブジェクトがリロードされていました。この時間は、信頼できる証明書のリストのようなディレクティブを継承するときに、重大な問題になります。この動作は、特定の条件下では、NGINXの起動時間に大きな影響を与え、構成の保存のために大量のメモリを必要とする可能性がありました。
新しい動作では、SSLディレクティブは、キャッシュされた証明書ファイルと関連オブジェクトを参照するようになりました。その結果、同じ証明書オブジェクトを繰り返し参照する構成におけるメモリフットプリントとロード時間が大幅に削減されます。この効果は、信頼できる証明書の小さなセットが多数のロケーションブロックで参照される大規模なNGINX構成が関連する場合に最も明確に表れます。
以下の図は、約5,400のロケーションブロック(トップレベルとネストされたもの)と、878の証明書で構成されたNGINXにおけるロード時間の改善を視覚化したものです。
グラフの右側でロード時間が大幅に低下していることに注目してください。平均ロード時間が、変更前の約40秒から、新しい動作では6秒以下に短縮されています。
NGINX Plus R32は、NGINXの構成の可能性を広げるNGINXオープンソース1.25.5の機能を継承しています。具体的には、NGINX streamモジュールがルーターとして機能できるようになり、streamコンテキストからhttpやmailなどの他のコンテキストに接続を渡したり、streamコンテキスト内の別の仮想サーバーに接続を渡したりするプロキシとして機能できるようになりました。
この機能は、本リリースで導入されたngx_stream_pass_moduleモジュールの一部として利用可能です。このモジュールには、クライアント接続を渡すアドレスを指定できる「pass」というディレクティブがあります。アドレスは、IPアドレスとポートの組み合わせ、またはソケットパスで指定するか、NGINX変数で参照できます。
この機能を使用することで、すべてのトラフィックを単一のL4エンドポイントを介して実行したい場合、L4のstreamコンテキストでSSL接続を終了させ、そのSSL接続を他のモジュール(http、mail)や同じstreamコンテキスト内の他の仮想サーバーに渡すことができます。さらに、サーバー名やプロトコルに基づいた条件付きで、SSL接続を終了させ、残りのトラフィックを別の場所にプロキシすることもできます。これにより、単一のエンドポイントからのトラフィックを管理するための構成動作の新しい可能性が開けます。
以下の構成スニペットでは、streamモジュールでSSL接続を終了させ、リクエストされたサーバー名に基づいた条件付きで、httpコンテキスト、または同じstreamコンテキスト内の別の仮想サーバーに接続を渡します。
http {
server {
listen 8000;
location / {
return 200 foo;
}
}
}
stream {
map $ssl_server_name $pass_port {
foo.example.com 8000;
default 9001;
}
server {
listen 9000 ssl;
ssl_certificate domain.crt;
ssl_certificate_key domain.key;
pass 127.0.0.1:$pass_port;
}
server{
listen 9001;
return bar\n;
}
}
この例では、すべてのSSL接続はstreamのserverブロックで終了します。接続は、着信リクエストのサーバー名に基づいて、ポート8000でリスニングしているhttpサーバーか、ポート9001でリスニングしているストリーム仮想サーバーのどちらかに渡されます。
このモジュールは、サードパーティモジュールがSSL終了をサポートしていない場合にも効果を発揮します。このような場合、stream_passモジュールは、TLSで暗号化された接続を終了させてから、接続をサードパーティモジュールに渡すことができます。
以下の例は、SSLをネイティブにサポートしていないRTMPモジュールがどのようにしてstream_passモジュールを使ってTLSで暗号化されたトラフィックを受け入れるかを示しています。
rtmp {
server {
listen 1935;#rtmp
application foo{
live on;
}
}
}
stream {
server {
listen 1936 ssl; #rtmps
ssl_certificate domain.crt;
ssl_certificate_key domain.key;
pass 127.0.0.1:1935;
}
}
この構成スニペットでは、SSL接続は、streamのserverブロックで終了し、rtmpに渡されます。RTMPモジュールでは、この接続は暗号化されていないように見えるので、SSL接続をサポートするための追加のカスタマイズや処理のオーバーヘッドの必要がなくなります。
NGINX Plus R32では、NGINX Plusの特権実行と非特権実行の両方で公式のNGINX Plusコンテナイメージを利用できます。どちらのコンテナタイプも、NGINXがサポートする管理プレーンへの接続を簡単にするNGINX Agentをオプションでインストールして利用できます。これらのイメージは、NGINXレジストリ(private-registry.nginx.com)からダウンロードできます。NGINX Plusの証明書と鍵、またはJSON Web Token(JWT)を使用してイメージにアクセスするには、以下の手順に従ってください。
実験的なHTTP3/QUIC実装において、以下の潜在的なセキュリティ問題が特定され、修正されました。
NGINX Plus R32は、NGINXオープンソース1.25.5をベースとしていて、NGINX Plus R31のリリース以降(NGINX 1.25.4および1.25.5)に行われた機能変更、機能、およびバグ修正を継承しています。
最近のリリースから継承された新しい変更点、機能、バグ修正、および回避策の完全なリストについては、NGINX CHANGESファイルを参照してください。
NGINX Plus R32には、NGINX JavaScript(njs)モジュールのバージョン0.8.4からの変更点が含まれています。以下に、NGINX Plus R31でリリースされた0.8.2以降のnjsにおける主な変更点を示します。
すべての機能、変更点、およびバグ修正の包括的なリストについては、njs Changesログを参照してください。
NGINX Plusを実行している場合は、できるだけ早くNGINX Plus R32にアップグレードすることを強くお勧めします。素晴らしい新機能に加え、いくつかの修正や改善も追加されます。また、最新の状態にしておくことで、サポートチケットを発行する必要がある場合にNGINXがお客様をサポートしやすくなります。
NGINX Plusをまだお試しでない方は、ぜひお試しください。セキュリティ、ロードバランシング、APIゲートウェイのユースケースとして、またはモニタリングと管理APIが強化された完全サポートのWebサーバーとして使用できます。30日間の無料トライアルで、今すぐ始めることができます。
"This blog post may reference products that are no longer available and/or no longer supported. For the most current information about available F5 NGINX products and solutions, explore our NGINX product family. NGINX is now part of F5. All previous NGINX.com links will redirect to similar NGINX content on F5.com."