NGINX Full Version

NGINX Plus R30の発表

NGINX Plus Release 30 (R30)をリリースいたしました。NGINX Plusは、NGINXオープンソースをベースにした、唯一のオールインワン・ソフトウェア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: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in etc/nginx/nginx.conf :15
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

このディレクティブを使用しているすべてのユーザーは、NGINXをアップグレードし、サーバーごとにHTTP/2を有効にするhttp2ディレクティブを使用することを強くお勧めします。

こちらを

listen 443 ssl http2;

下記に変更してください。

listen 443 ssl;
http2 on;

Amazon Linux 2 における GeoIP2 モジュールの利用不可

NGINX Plus の以前のバージョンでは、GeoIP2モジュールのビルドに Amazon Linux 2 EPELリポジトリの”libmaxminddb”ライブラリを使用していました。EPELリポジトリはこのライブラリを提供しなくなり、Amazon Linux 2ディストリビューションからもネイティブにアクセスできなくなりました。そのため、このモジュールをAmazon Linux 2用にビルドする実行可能な方法がないため、NGINX Plus R30では利用できなくなりました。

MQTT ディレクティブの変更点

MQTT メッセージを構築するためのバッファサイズを指定するためのmqtt_rewrite_buffer_sizeディレクティブは、mqtt_buffersディレクティブに代わりました。新しいディレクティブでは、各バッファのサイズを指定するとともに、 コネクションごとに割り当てられるバッファの数を指定することができます。

API バージョンの更新

NGINX Plus APIのバージョン番号が8から9に更新され、「ワーカーごとのコネクション状況の監視」で説明されているワーカーごとのメトリクスが追加されました。以前のバージョン番号でも動作しますが、出力にはそれ以降のAPIバージョンで追加されたメトリクスは含まれません。

プラットフォーム対応の変更

新たに以下のプラットフォームがサポートされます:

以下プラットフォームはサポート対象外となります。

以下プラットフォームはNGINX Plus R31でサポート対象外となる予定です。

新機能の詳細

QUIC+HTTP/3のネイティブサポート

HTTP/3 over QUICは、多くの企業のお客様から待ち望まれていた機能であり、NGINX Plus R30で正式に導入することになりました。これは新しい技術の実装であり、今後のリリースでも引き続き注力していきます。NGINX Plusをご利用のお客様には、まずテスト環境などでお試しいただき、どのようなフィードバックでもご共有ください。

NGINX Plusは、セキュアな通信と暗号化機能をOpenSSLに依存しており、オペレーティングシステムに同梱されているSSL/TLSライブラリを利用しています。しかし、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 {             # for better compatibility it's recommended             # to use the same port for quic and https             listen 8443 quic reuseport;             listen 8443 ssl;
            ssl_certificate     certs/example.com.crt;             ssl_certificate_key certs/example.com.key;
            location / {                 # required for browsers to direct them into quic port                 add_header Alt-Svc 'h3=":8443"; ma=86400';             }         }     }

NGINX Plus R29で導入されたテスト段階でのHTTP/3サポートとは異なり、NGINX Plus R30のQUIC+HTTP/3サポートは単一のバイナリで利用できます。この改善により、環境への機能導入が容易になります。

注:NGINX Plus R30では、スタンドアロンQUICバイナリのサポートとアップデートを終了し、今年後半にはダウンロードオプションとして削除する予定です。

ワーカーごとのコネクション状況の監視

NGINX Plusのユーザーは、worker_connectionsディレクティブを適切に調整するために、ワーカープロセスごとのコネクションの合計を監視できるようになりました。この改善により、ワーカー間でどのようにコネクションが分散されているかをよりよく把握できるようになりました。ワーカーごとのコネクションを調整できるようになったことで、NGINXのデプロイメントをより適切に評価できるようになりました。

ワーカーごとのコネクションメトリクスは REST API で利用できます。ワーカーごとの接続メトリクスを取得するには、…/api/9/workersエンドポイントを使用します。

ワーカーごとのコネクションメトリクスを取得するには、.../api/9/workers/<worker id>エンドポイントを使います。worker idは0から始まるインデックスです。

レスポンスの例を下記に示します。

{     {         "id": 0,         "pid": 2346,         "connections": {             "accepted": 1,             "dropped": 0,             "active": 1,             "idle": 0         },         "http": {             "requests": {                 "total": 15,                 "current": 1             }         }     },     {         "id": 1,         "pid": 1234,         "connections": {             "accepted": 3,             "dropped": 0,             "active": 1,             "idle": 0         },         "http": {             "requests": {                 "total": 15,                 "current": 1             }         }     },
    ...
}

以下に示すように、NGINX Plusのライブアクティビティ監視ダッシュボードでは、ワーカーごとのコネクションメトリクスを確認できます。demo.nginx.comでこの機能のライブデモにアクセスしてみてください。

ダッシュボードには、NGINX Plusのコネクションとリクエストに関する以下の情報が表示されます。

コネクション数:

リクエスト数

診断パッケージ

問題解決のための所要時間を短縮するために、診断パッケージは NGINX 環境の問題のトラブルシューティングに必要なデータの収集プロセスを合理化します。また、診断パッケージは、問題のトラブルシューティングに必要な情報を手動で要求および収集することに関連する不一致や遅延を回避し、NGINX Plusのお客様とF5サポート間のやり取りをより効率的にします

診断パッケージは以下の情報を収集します。

診断パッケージを追加する目的は、パッケージ内のスクリプトがどのようなコマンドを実行し、どのようなデータが収集されるかをユーザーに透過的に示すことです。NGINX Plus診断パッケージのページを参照してください(リンクは近日公開予定です。)

注: 診断パッケージの利用可能性は、現在のNGINX Plus R30リリースの一部として発表されていますが、診断パッケージは実際にはリリースに依存しません。今後、トラブルシューティングのデータ収集プロセスを改善する目的で、お客様およびF5サポートからのフィードバックに基づいて更新する予定です。

NGINX Plus R30のその他の機能強化

MQTTの最適化

メッセージ・キューイング・テレメトリ・トランスポート(MQTT)フィルター・モジュールのメモリ消費量の改善により、スループットが4~5倍向上しました。

ディレクティブmqtt_rewrite_buffer_sizeが削除されました。その代わりに、新しいディレクティブmqtt_buffers <num> <size>が導入され、モジュールが接続ごとに割り当てるバッファの数と、それぞれのバッファのサイズが指定できるようになりました。デフォルトのバッファ数は100で、各バッファのデフォルトのサイズは1024バイトです。

DNS リロードの最適化

NGINX Plusは、リロード時に動的に解決されたアップストリームホストのDNS名の有効期限を保持するようになり、設定のリロード時に再解決の必要性がなくなりました。この更新前は、すべてのアップストリームに対して DNS 名前解決がトリガされました。この更新により、NGINXはすべてのアップストリームのDNS名前解決と有効期限を保持し、リロード時に新規または変更されたアップストリームに対してのみDNS名前解決をトリガします。

この最適化は、多数のアップストリームホストを含むNGINX環境で最も効果を発揮します。NGINXの構成に100以上のアップストリームホストがある場合、最適化が最も顕著になります。

NGINXオープンソースから継承された変更点

NGINX Plus R30はNGINXオープンソース1.25.1をベースとしており、NGINX Plus R29のリリース以降(NGINX 1.25.0および1.25.1)に行われた機能変更、機能、バグ修正を継承しています。

変更点

特徴

バグ修正

最近のリリースから継承された新しい変更、機能、バグ修正、および回避策の全リストについては、NGINX CHANGESファイルを参照してください。

NGINX JavaScript モジュールへの変更

NGINX Plus R30には、NGINX JavaScript(njs)モジュールバージョン0.8.0からの変更が組み込まれています。

機能

変更点

バグ修正

すべての機能、変更、およびバグ修正の包括的なリストについては、njs Changes logを参照してください。

NGINX Plusのアップグレードまたはお試し

NGINX Plusを実行している場合は、できるだけ早くNGINX Plus R30にアップグレードすることを強くお勧めします。素晴らしい新機能に加え、いくつかの修正や改善も追加されます。また、最新版であることは、サポートチケットを発行する必要がある場合にNGINXがお客様をサポートするのに役立ちます。

NGINX Plusをまだお試しでない方は、ぜひチェックしてみてください。セキュリティ、ロードバランシング、APIゲートウェイのユースケースとして、または強化されたモニタリングと管理APIを備えた完全にサポートされたWebサーバーとして使用できます。30日間の無料トライアルをご利用ください。