NGINX Plus リリース 30 (R30) の提供開始をお知らせいたします。 NGINX オープンソースをベースにした NGINXPlus は、唯一のオールインワン ソフトウェア Web サーバー、ロード バランサー、リバース プロキシ、コンテンツ キャッシュ、API ゲートウェイです。
NGINX Plus R30 の新機能と強化された機能は次のとおりです。
このリリースの最後を飾るのは、 NGINX オープンソースから継承された新機能とバグ修正、および NGINX JavaScript モジュールの更新です。
注記: NGINX Plus R29 以外のリリースからアップグレードする場合は、現在のバージョンとこのバージョン間のすべてのリリースについて、以前の発表ブログの「動作の重要な変更」セクションを必ず確認してください。
listen … http2
ディレクティブの廃止listen … http2
ディレクティブは NGINX 1.25.1 では非推奨になりました。 nginx -t
を使用した NGINX 構成チェックでは、その旨の警告が表示されます。
nginx -t
nginx: [警告] 「listen ... http2」ディレクティブは非推奨です。代わりに etc/nginx/nginx.conf で「http2」ディレクティブを使用してください :15
nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です
nginx: 設定ファイル /etc/nginx/nginx.conf のテストは成功しました
このディレクティブの既存のすべてのユーザーは、NGINX をアップグレードし、サーバーごとに HTTP/2 を有効にする http2 ディレクティブを使用することを強くお勧めします。
これを変更します:
443 ssl http2 をリッスンします。
これに対して:
listen 443 ssl;
http2 オン;
以前のバージョンの NGINX Plus では、Amazon Linux 2 EPEL リポジトリの「libmaxminddb」ライブラリを使用してGeoIP2 モジュールを構築していました。 EPEL リポジトリではこのライブラリが提供されなくなり、Amazon Linux 2 ディストリビューションからネイティブにアクセスすることもできなくなりました。 したがって、Amazon Linux 2 用にビルドする実行可能な方法がないため、このモジュールは NGINX Plus R30 では利用できなくなりました。
MQTT メッセージを構築するためのバッファのサイズを指定するために使用されるmqtt_rewrite_buffer_size
ディレクティブは、 mqtt_buffers
ディレクティブに置き換えられました。 新しいディレクティブを使用すると、接続ごとに割り当て可能なバッファの数と、各バッファのサイズを指定できるようになります。
NGINX Plus API のバージョン番号は、Per-Worker Connection Telemetryで説明されているワーカーごとのメトリックの追加を反映するために 8 から 9 に更新されました。 以前のバージョン番号も引き続き機能しますが、出力にはそれ以降の API バージョンで追加されたメトリックは含まれません。
サポートされる新しいオペレーティング システム:
削除された古いオペレーティング システム:
NGINX Plus R31 で非推奨となり削除が予定されている古いオペレーティング システム:
HTTP/3 over QUIC は、多くの企業顧客から要望の多かった待望の機能であり、NGINX Plus R30 で正式に導入できることを嬉しく思います。 これは、今後のリリースでも引き続き注力していく新しいテクノロジーと実装です。 NGINX Plus ユーザーには、まず非本番環境で試してみて、貴重なフィードバックを共有することをお勧めします。
NGINX Plus は、オペレーティング システムに付属の SSL/TLS ライブラリを利用して、安全な通信と暗号化機能を実現するために OpenSSL に依存しています。 ただし、このリリース時点では QUIC の TLS インターフェースは OpenSSL でサポートされていないため、HTTP/3 に必要な TLS 機能が不足しているため、サードパーティのライブラリが必要になります。
この懸念に対処するために、NGINX チームはOpenSSL 互換性レイヤーを開発し、quictls、BoringSSL、LibreSSL などのサードパーティの TLS ライブラリを構築して出荷する必要がなくなりました。 これにより、カスタム TLS 実装の負担やサードパーティ ライブラリのスケジュールやロードマップへの依存なしに、NGINX でエンドツーエンドの QUIC+HTTP/3 エクスペリエンスを管理できるようになります。 今後のリリースでは、0-RTT のサポートなど、より多くの機能とオプションを追加して OpenSSL 互換性レイヤーを強化する予定です。
QUIC+HTTP/3 の設定は次のとおりです。
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http3"';
access_log logs/access.log quic;
server {
# 互換性を高めるために、quic と https に同じポートを使用することをお勧めします
# listen 8443 quic reuseport;
listen 8443 ssl;
ssl_certificate certs/example.com.crt;
ssl_certificate_key certs/example.com.key;
location / {
# ブラウザが quic ポートに誘導するために必要
add_header Alt-Svc 'h3=":8443"; ma=86400';
}
}
}
NGINX Plus R30 の QUIC+HTTP/3 サポートは、単一のバイナリとして利用できます。NGINX Plus R29 で導入された実験的な HTTP/3 サポートとは異なり、nginx quic には別のバイナリがありました。 この改善により、環境に機能を展開しやすくなります。
注記: NGINX Plus R30 では、スタンドアロン QUIC バイナリのサポートとアップデートを終了し、今年後半にダウンロード オプションから削除する予定です。
NGINX Plus ユーザーは、ワーカー プロセスごとの合計接続を監視して、 worker_connections
ディレクティブを適切に調整できるようになりました。 この改善により、ユーザーはワーカー間で接続がどのように分散されているかをよりよく把握できるようになります。 ワーカー接続を調整できることは、NGINX の展開をより適切に評価するのにも役立ちます。
ワーカーごとの接続メトリックは、REST API 経由で利用できます。ワーカーごとの接続メトリックを取得するには、 …/api/9/workers
エンドポイントを使用します。
個々のワーカーのワーカーごとの接続メトリックを取得するには、 .../api/9/workers/<ワーカー ID >
エンドポイントを使用します。 ワーカー ID には
0 から始まるインデックスがあります。
応答の例は次のとおりです。
{
{
"id": 0,
"pid": 2346,
"接続": {
"承認済み": 1,
「ドロップ」: 0,
「アクティブ」: 1,
「アイドル」: 0
},
"http": {
"リクエスト": {
"合計": 15,
「現在」: 1
}
}
},
{
"id": 1,
"pid": 1234,
"接続": {
"承認済み": 3、
「ドロップ」: 0,
「アクティブ」: 1,
「アイドル」: 0
},
"http": {
"リクエスト": {
"合計": 15,
「現在」: 1 } } }, ... }
ワーカーごとの接続メトリックは、以下に示すように、 NGINX Plus ライブ アクティビティ モニタリング ダッシュボードで確認できます。 この機能のライブ デモは、demo.nginx.com でご覧いただけます。
ダッシュボードには、NGINX Plus の接続とリクエストに関する以下の情報が表示されます。
接続:
リクエスト:
問題解決の所要時間を短縮するために、診断パッケージは、NGINX 環境の問題のトラブルシューティングに必要なデータの収集プロセスを合理化します。 診断パッケージは、問題のトラブルシューティングに必要な情報を手動で要求して収集することに伴う矛盾や遅延を回避するのにも役立ち、 NGINX Plus の顧客と F5 サポート間のやり取りをより効率的にします。
診断パッケージでは以下の情報を収集します。
ps
、 lsof
、 vmstat
など)systemd
など診断パッケージを追加する目的は、パッケージ内のスクリプトが実行するコマンドと収集されるデータをユーザーに明確に伝えることです。 詳細については、 NGINX Plus 診断パッケージページを参照してください。
注記: 診断パッケージの可用性は、現在の NGINX Plus R30 リリースの一部として発表されています。ただし、診断パッケージは実際にはリリースに依存しません。 今後は、トラブルシューティング データ収集プロセスを改善する目的で、お客様と F5 サポートからのフィードバックに基づいて更新する予定です。
Message Queuing Telemetry Transport (MQTT) フィルター モジュールのメモリ消費が改善され、スループットが 4 ~ 5 倍に増加しました。
ディレクティブmqtt_rewrite_buffer_size
は削除されました。 代わりに、新しい指令は mqtt_buffers <数値> <サイズ>
モジュールが接続ごとに割り当てることができるバッファの数と各バッファのサイズを指定するために導入されました。 デフォルトのバッファ数は 100 で、各バッファのデフォルトのサイズは 1024 バイトです。これにより、変数mqtt_buffers のデフォルト値は <100> <1024>
になります。
NGINX Plus では、リロード後も動的に解決されたアップストリーム ホストの DNS 名の有効期限が保持されるようになり、設定のリロード時に再解決する必要がなくなりました。 この更新の前は、すべてのアップストリームに対して DNS 解決がトリガーされていました。 このアップデートにより、NGINX はすべてのアップストリームの DNS 解決と有効期限を保持し、リロード時に新しいアップストリームまたは変更されたアップストリームに対してのみ DNS 解決をトリガーします。
この最適化は、多数のアップストリーム ホストを含む NGINX 環境に最も大きな影響を与えます。 NGINX 構成に 100 台以上のアップストリーム ホストがある場合、最適化の効果は最も顕著になります。
NGINX Plus R30 は NGINX Open Source 1.25.1 をベースとしており、NGINX Plus R29 のリリース以降に行われた機能変更、特徴、バグ修正 (NGINX 1.25.0 および 1.25.1) を継承しています。
server_push は
採用が最小限で、非常に限られたユースケースでのみ使用できました。 (IETF 102 リファレンス ドキュメントによると、セッションのわずか 0.04% で使用されました。 RFC 913 によれば、「効果的に使用することは困難」でした。) HTTP/2 サーバー プッシュはChrome バージョン 106 で無効になりました。 この変更の一環として、 http2_push
、 http2_push_preload
、およびhttp2_max_concurrent_pushes
ディレクティブは廃止されました。ssl
ディレクティブはサポートされなくなりました。 ssl
ディレクティブは NGINX 1.15.0 で非推奨となり、listen ディレクティブのssl
パラメータに置き換えられました。 非推奨の ssl ディレクティブは削除されました。listen … http2
ディレクティブは非推奨です。 代わりにhttp2
ディレクティブを使用することをお勧めします。listen port_num http2
) を構成すると、HTTP/2 接続のみを作成できます。 h2 リスニング ソケットは、ALPN 経由のプロトコルのネゴシエーションにより、HTTP/1.1 と HTTP/2 の両方をサポートします。 ただし、既存の実装では、HTTP/1.1 クライアントはソケットで失敗し、プロトコルをネゴシエートする手段として HTTP アップグレードを使用できなくなります。 この変更により、HTTP/2 を使用するときに、プレーン TCP ソケットで HTTP/1.1 と HTTP/2 を同時にサポートできるようになります。$sent_http_*
によるバッファ オーバーランの可能性の回避が有効になっています。 マルチヘッダー$sent_http_
変数を評価するロジックに欠陥があり、特定の要素がクリアされてもリンク リストに残っている場合に、潜在的なバッファ オーバーランが発生していました。 この問題は、サードパーティのモジュールを使用してマルチヘッダー値を上書きしたときに発生しました。 このアップデートでは、洗練された境界チェックが導入され、これらの変数のより安全な処理と評価が保証されます。quic_mtu
ディレクティブを削除しましたlisten ディレクティブの http3 パラメータ
を削除しましたセグメント違反
を修正しました。最近のリリースから継承された新しい変更、機能、バグ修正、回避策の完全なリストについては、NGINX CHANGESファイルを参照してください。
NGINX Plus R30 には、NGINX JavaScript (njs) モジュール バージョン 0.8.0 からの変更が組み込まれています。
ngx.build 、 ngx.conf_file_path 、 ngx.error_log_path 、 ngx.prefix 、 ngx.version 、 ngx.version_number
、およびngx.worker_id
。js_shared_dict_zone
ディレクティブを導入しました。Array.from()、Array.prototype.toSorted()、Array.prototype.toSpliced()、Array.prototype.toReversed()
。%TypedArray%.prototype.toSorted()、%TypedArray%.prototype.toSpliced()、%TypedArray%.prototype.toReversed()
。algorithm、extractable、type、usages です
。r.requestBody() を
http モジュールから削除しました。 代わりにr.requestBuffer
またはr.requestText
プロパティを使用する必要があります。r.responseBody() を
http モジュールから削除しました。 代わりに、 r.responseBuffer
またはr.responseText
プロパティを使用する必要があります。http
モジュールでフィルタリング中にr.internalRedirect()
で例外がスローされます。retval
引数が提供されます。 この変更により、コードの変更が必要となる njs の C 拡張との互換性が失われます。String.bytesFrom()、String.prototype.fromBytes()、String.prototype.fromUTF8()、String.prototype.toBytes()、String.prototype.toUTF8()、String.prototype.toString(encoding)
。http
モジュールでフィルタリングする際のr.status
セッターが修正されました。http
モジュールのLocation
ヘッダーの設定を修正しました。сrypto.getRandomValues()
の retval を修正しました。Date.parse() を
修正しました。すべての機能、変更、バグ修正の包括的なリストについては、njs変更ログを参照してください。
NGINX Plus を実行している場合は、できるだけ早く NGINX Plus R30 にアップグレードすることを強くお勧めします。 素晴らしい新機能に加えて、いくつかの追加の修正と改善も得られます。最新の状態にしておくと、サポート チケットを発行する必要がある場合に NGINX がサポートしやすくなります。
NGINX Plus をまだお試しいただいていない方は、ぜひお試しください。 セキュリティ、負荷分散、API ゲートウェイのユースケースに使用したり、強化された監視および管理 API を備えた完全にサポートされた Web サーバーとして使用したりできます。 今すぐ30 日間の無料トライアルを始めましょう。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"