NGINX Plus リリース 13 (R13)が、すべての NGINX Plus サブスクライバーに無料アップグレードとして提供されるようになりました。 NGINX Plus は、NGINX Open Source 上に構築された、Web サーバー、ロード バランサー、コンテンツ キャッシュを組み合わせたものです。 NGINX Plus R13 には、動的デプロイメント、強化されたデバッグ機能、セキュリティとパフォーマンスの向上に重点を置いた新機能が含まれています。
NGINX Plus R13 では以下のサポートが導入されました:
njs
インタラクティブ シェルは、JavaScript のすべての組み込みオブジェクトを表示するコンソールを提供します。 これらのオブジェクトをさらに調査すると、各オブジェクトで使用可能なメソッドとプリミティブが明らかになります。 さらに、セッション永続性のためのスティッキー ラーニング メソッドの改善、HTTP トレーラーのサポート、HTTP 置換用の新しいサードパーティの動的モジュールなどの機能強化も行われます。
sticky_cookie_insert
ディレクティブは NGINX Plus R2 で非推奨となり、NGINX Plus R13 で削除されました。ModSecurity モジュールのディレクティブはサポートされなくなりました– ModSecurity のSecRequestBodyInMemoryLimit
ディレクティブはサポートされなくなりました。 ModSecurity モジュールは NGINX 構成で定義されたリクエスト本文の処理に従うため、このディレクティブを安全に削除できます。
[編集者注– NGINX Plus 用のNGINX ModSecurity WAFモジュールは、 2022 年 4 月 1 日をもって正式に販売終了となり、 2024 年 3 月 31 日をもってサポート終了となります。 詳細については、弊社ブログの「F5 NGINX ModSecurity WAF はサポート終了に移行しています<.htmla>」をご覧ください。
NGINX Plus R13 には、単一のエンドポイントに統合された新しい REST API が含まれています。 以前のバージョンの NGINX Plus には、 Upstream Conf API とExtended Status API が別々に含まれていました。 新しい API は両方の機能を組み合わせ、動的構成のさまざまなユースケースで新しい Key-Value ストア モジュールもサポートします (以下のKey-Value ストアのセクションで説明します)。
NGINX Plus API を有効にするには、 location
ブロックに新しいapi
ディレクティブを含めます。
server { listen 80;
location /api {
api write=on;
# 許可されたユーザーのみにアクセスを許可するディレクティブ
}
}
デフォルトでは、 NGINX Plus API はデータへの読み取り専用アクセスを提供します。 上流サーバーと新しいKey-Value Storeモジュールに変更を加えることができるように、読み取り/書き込みアクセスを有効にするには、 api
ディレクティブにwrite=on
パラメータを追加します。 特に読み取り/書き込みモードが有効になっている場合は、API へのアクセスを許可されたユーザーのみに制限することを強くお勧めします。
API エンドポイントから入手できるすべての種類の情報を表示するには、次のコマンドを実行します。
$ curl http://localhost:80/api/1/ ["nginx","プロセス","接続","ssl","スラブ","http","ストリーム"]
特定の種類の情報の詳細を表示するには、リクエスト URI に適切な文字列を追加します。
接続
– 合計接続数の指標を表示http
– HTTPトラフィックのメトリックを表示し、HTTPアップストリーム構成を変更します。
http
には 2 つの「サブタイプ」もあります。
http/server_zones
– HTTP仮想サーバーに関する情報を表示しますhttp/upstreams
– HTTPアップストリームサーバーグループに関する情報を表示し、その設定を変更しますnginx
– NGINXに関する一般情報を表示するプロセス
– NGINXワーカープロセスに関する情報を表示するslabs
– NGINXによって割り当てられた共有メモリの情報を表示するssl
– SSL/TLS クライアントのメトリックをリアルタイムで表示しますstream
– TCP/UDPトラフィックのメトリックを表示し、TCP/UDPアップストリームサーバーグループの構成を変更します( stream/upstreams
)。NGINX Plus は、NGINX Open Source で利用可能なものに加えて、40 を超える独自のメトリックを報告します。 NGINX Plus API を使用してこれらのメトリックにアクセスできるようになりました。API を使用して、重要なメトリックにアクセスします。
たとえば、URI に接続を
追加すると、受け入れられた、アクティブな、ドロップされた、およびアイドル状態のクライアント接続の数を含む接続ステータスのスナップショットが出力されます。
$ curl http://localhost:80/api/1/connections {"accepted":3,"dropped":0,"active":1,"idle":0}
別の例: URI にssl を
追加すると、SSL クライアント統計のスナップショットがリアルタイムで出力されます。
$ curl http://localhost:80/api/1/ssl {"handshakes":0,"handshakes_failed":0,"session_reuses":0}
NGINX Plus R12 以前では、 upstream_conf
ディレクティブを使用して、NGINX Plus をリロードせずに既存のアップストリーム サーバー グループの動的な構成を有効にすることができました。 この機能は現在、 NGINX Plus APIに組み込まれています。
この NGINX Plus 構成スニペットは、 backendと呼ばれるアップストリーム グループに 2 つのサーバーを定義し、 /apiでNGINX Plus API を有効にします。
アップストリーム バックエンド { ゾーン バックエンド 64k;
サーバー 10.10.10.2;
サーバー 10.10.10.4;
}
サーバー {
listen 80;
サーバー名 www.example.org;
場所 /api {
api write=on;
}
}
バックエンドグループにサーバーを追加するには、 /api/1/http/upstreams/backend/serversへのcurl
リクエストに-d
オプションを含め、新しいサーバーの IP アドレス (ここでは 10.10.10.6) を定義する JSON テキストを指定します。 -i
オプションは、応答に HTTP ヘッダーが含まれることを意味します。 ( -X POST は
-d
のデフォルト メソッドであるため省略できますが、他のメソッドとの一貫性を保つために含めています。)
$ curl -iX POST -d '{"server":"10.10.10.6"}' http://localhost/api/1/http/upstreams/backend/servers HTTP/1.1 201 作成されました...
アップストリーム グループを構成するためのすべてのオプションの詳細については、 NGINX Plus APIモジュールのリファレンス ドキュメントを参照してください。
NGINX Plus R13 では、新しいKey-Value Storeモジュールが導入されました。 NGINX Plus API を使用すると、1 つ以上の「keyval」共有メモリ ゾーンでキーと値のペアをオンザフライで作成、変更、削除できます。 各キーと値のペアの値は、他の NGINX Plus 機能で使用するための変数として評価されます。
キー値ストア内のエントリを追加、変更、読み取り、削除するには、それぞれPOST
、 PATCH
、 GET
、 DELETE
HTTP メソッドを使用します。 キーバリューストアは、外部システムとのリアルタイム統合を可能にする豊富な動的構成ソリューションを提供します。
使用例の例:
次の構成スニペットでは、 Key-Value Storeモジュールを使用して、Web サイトのバニティ URL を管理します。
keyval_zone zone=redirects:1M state=state/redirects.json; # キーと値のペアをファイル keyval $uri $target zone=redirects; # $uri はキー、$target は値
server {
listen 80;
location /api {
api write=on; # NGINX Plus API を有効にします (本番環境ではこの場所を保護します)
}
if ($target) { # $uri が 'redirects' keyval ゾーンに存在する場合は True
return 301 $target; # クライアントを $uri に一致する値にリダイレクトします
}
location / {
proxy_pass http://backend;
}
}
keyval
ディレクティブでは、キーは HTTP 要求を発行するリモート マシンからの URI に設定されます。 $uri が
キー値ストア内のキーである場合、キーに関連付けられた値は$target
という新しい変数に割り当てられます。 次に、 $target が
存在する場合、NGINX Plus はクライアントを$uri
の一致する値にリダイレクトします。
キーバリューストアに初期のバニティ URL を設定するために、JSON としてエンコードされたデータをNGINX Plus APIの URI に送信します。
$ curl -iX POST -d '{"/conf":"/conf2017"}' http://localhost/api/1/http/keyvals/redirects HTTP/1.1 201 作成されました...
これで、 /conf を要求するクライアントは/conf2017にリダイレクトされます。
$ curl -i http://localhost/conf HTTP/1.1 301 一時的に移動しました 場所: http://localhost/conf2017
PATCH
メソッドを使用すると、キー値ストアにさらにバニティ URL リダイレクトを追加し、既存のエントリを動的に変更できます。
$ curl -iX PATCH -d '{"/conf":"/conf2018"}' http://localhost/api/1/http/keyvals/redirects HTTP/1.1 204 コンテンツがありません...
keyval
ディレクティブを使用してそれぞれに異なる共有メモリ ゾーンを定義することにより、複数の個別のキー値ストアを構成できます。 詳細については、 Key-Value Storeモジュールのリファレンス ドキュメントを参照してください。
新しいNGINX Plus API には、API を探索し、各リソースの機能を理解するために使用できるSwagger仕様が付属しています。 Swagger ドキュメントは NGINX Plus にバンドルされており、 http:// nginx-host /swagger-ui/からアクセスできます。
Swagger UI の対話型部分では、 NGINX Plus API を有効にする必要があります。これは、 conf.d/default.confファイルの/api/ location ブロックのコメントを解除することで実現できます。
# NGINX Plus API を利用するために、適切なアクセス制御で /api/ ロケーションを有効にします
#
#location /api/ {
# api write=on;
# allow 127.0.0.1;
# deny all;
#}
https://demo.nginx.com/swagger-ui/でNGINX Plus APIドキュメントを参照することもできます。
注記: 拡張ステータス メトリック、アップストリーム構成、新しい Key-Value ストア モジュールを含むNGINX Plus API全体は、NGINX Plus 専用です。
NGINX Plus R13 を使用すると、HTTP リクエストのミラーリングを有効にすることができます。 この機能を使用すると、アップストリーム グループにプロキシされる HTTP リクエストが複製され、別の宛先にも送信されます。 元のリクエストは通常どおり処理されますが、複製されたリクエストからの応答はすべて無視されます。 リクエストミラーリングには、次のような多くのユースケースがあります。
リクエストミラーリングを有効にしても、システム全体のスループットとパフォーマンスにはほとんど影響がありません。 次の構成スニペットは、新しいミラー
ディレクティブを使用してリクエストを複製し、別のアップストリーム サーバーに渡す方法を示しています。
場所 / { ミラー /mirror;
proxy_pass http://backend;
}
場所 /mirror {
内部;
proxy_pass http://test_backend$request_uri;
}
リクエストは、通常の処理のためにバックエンドの
アップストリーム グループにプロキシされます。 これらは、元のリクエストの URI を保持したまま、 test_backendという名前の別のアップストリーム グループに複製され、プロキシされます。
注記: リクエストミラーリングは、NGINX Open Source 1.13.4 で最初にリリースされました。
NGINX Plus R12で一般公開されて以来、NGINX JavaScript モジュール (旧称 nginScript) は、コア JavaScript 言語サポートによって拡張され続けています。 このリリースでは、16 進数 (0x7b など) と科学的記数法 (512e10 など) のサポートが導入されています。 Object
クラスのプリミティブ メソッドも実装されました。
NGINX JavaScript では、NGINX JavaScript コードの開発を支援するために、 njs
コマンドで呼び出される対話型シェルも提供されるようになりました。
次のシェル スニペットは、NGINX JavaScript インタラクティブ シェルを入力し、最大 30 秒先のランダムな日付を生成する式を定義し、2 つの数値の合計を計算する方法を示しています。
$ njsインタラクティブ njscript >> Date.now() + Math.round(Math.random()*30*1000); 1500976350968 >> 0x7b + 512e10; 5120000000123 >>
詳細については、弊社のブログの NGINX JavaScript<.htmla> の紹介をご覧ください。
注記: NGINX JavaScript は、NGINX Open Source と NGINX Plus の両方で利用できます。
NGINX 1.11.5 および NGINX Plus R11 では、NGINX 自体とは独立して動的モジュールをコンパイルするためのサポートが導入されました。 これにより、NGINX および NGINX Plus のユーザーは、NGINX, Inc. リポジトリからの公式ビルドを使用し、必要な動的モジュールのみをロードできるようになります。
NGINX Plus R13 では、動的モジュールをコンパイルしてインストール可能なモジュールとしてパッケージ化し、リンクされている基本 NGINX バージョンとの依存関係を維持して尊重するビルド ツールを提供します。
ビルド ツールの詳細については、ブログの「動的モジュール用のインストール可能なパッケージの作成」を参照してください。
注記: ビルド ツールは、NGINX Open Source と NGINX Plus の両方で利用できます。
セッション永続性は、NGINX Plus ロードバランシングの非常に便利な機能であり、特定のクライアントからのすべてのリクエストを 1 つのサーバーに送信できます。 セッションの永続性を確立する方法は複数あります。「スティッキー ラーニング」方式では、NGINX Plus は特定の Cookie の存在を探し、その Cookie がリクエストに含まれている場合は常にクライアントを同じサーバーに固定します。
NGINX Plus R13 では、完全な応答ペイロードが到着するまで待つのではなく、アップストリーム サーバーが応答のヘッダーを送信するとすぐにスティッキー セッションを確立できるようになりました。 したがって、NGINX Plus は、スティッキー セッションをできるだけ早くクライアントに送信できます。 新しいヘッダー
パラメータをスティッキー
ラーニング
ディレクティブに含めます。
アップストリーム バックエンド { ゾーン バックエンド 64k;
サーバー 10.10.10.2;
サーバー 10.10.10.4;
スティッキー ラーニング create=$upstream_cookie_sessionid
lookup=$cookie_sessionid
ゾーン=client_sessions:1m
ヘッダー;
}
ヘッダー
パラメータは、アプリケーションがエラーを起こしやすく、クライアントが失敗したリクエストを同じアップストリーム サーバーに再送信する場合に特に便利です。
注記: スティッキーラーン セッション永続性は、NGINX Plus 専用です。
NGINX Plus R13 では、次の追加機能が導入されています。
add_trailer
ディレクティブを使用すると、任意のトレーラーをHTTP 応答の末尾に追加できます。 トレーラー応答ヘッダーを使用すると、送信者はチャンクされたメッセージの最後に追加のフィールドを含めることができ、メッセージの整合性チェックやデジタル署名など、メッセージ本文の送信中に動的に生成される可能性のあるメタデータを提供できます。worker_shutdown_timeout
ディレクティブを使用します。 シャットダウンまたは再起動の信号を受信した後、タイムアウトが経過すると、NGINX Plus は開いているすべてのクライアント接続を閉じようとします。NGINX Plus を実行している場合は、できるだけ早くリリース 13 にアップグレードすることを強くお勧めします。 数多くの修正と改善が行われており、サポート チケットを発行する必要がある場合に、当社がサポートしやすくなります。 インストールおよびアップグレードの手順については、カスタマー ポータルをご覧ください。
アップグレードを進める前に、このブログ投稿に記載されている新機能と動作の変更をよく確認してください。
NGINX Plus をまだお試しいただいていない方は、Web アクセラレーション、負荷分散、アプリケーション配信、または強化された監視および管理 API を備えた完全にサポートされた Web サーバーとして、ぜひお試しいただくことをお勧めします。 今すぐ30 日間の無料評価版を始めて、NGINX Plus がアプリケーションの配信とスケールアウトにどのように役立つかを実際に確認することができます。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"