本日(7月24日)、過去3か月にわたる開発が完了し、NGINX Plus Release 4 (R4)をリリースしました。
NGINX Plus R4は、オープンソースブランチで最近リリースされた機能と、商用版限定の複数の機能を統合し、十分なテストとサポートを備えたリリースとして提供します。
エンドツーエンドのセキュリティ
アップストリームの証明書検証とSNIサポートにより、信頼できない環境におけるAPI呼び出しと負荷分散トラフィックのセキュリティが向上します。外部パスフレーズストアにより、重要なSSL秘密鍵のセキュリティが向上します。
エンドツーエンドのセキュリティは、特に複数の拠点にまたがるアプリケーションを構築する場合に重要な課題です。内部トラフィックがオープンなインターネット(またはパブリッククラウド内)を経由する場合、基本的なSSLだけでは、単純な中間者(MITM)攻撃を防ぐには不十分です。このリリースでは、CloudFlareの協力により、アップストリームサーバーの証明書検証が追加され、NGINX Plusが意図したサーバーと通信していることを確認できます。また、複雑なアップストリームサービスを安全にスケールアウトできるよう、アップストリームのSNIサポートも追加されています。

内部セキュリティも同様に重要です。多くのサイトではNGINX Plusの設定を一元管理していますが、その場合、SSL秘密鍵の機密性をどう確保するかが課題となります。秘密鍵を復号するためのパスフレーズは適切な解決策ですが、これまでは非常に使いにくいものでした。
NGINX Plusでは、外部パスフレーズストアを使用できます。これは各サーバーにローカルに配置され、構成とは分離されています。これにより、構成の保存時や転送中もキーが保護され、許可されたサーバーのみがキーを復号できます。
ロードバランシングとキャッシュの改善
NGINX Plusのロードバランシングとキャッシュに最適化と新たな手法を導入することで、Webアプリケーション配信に優れたフロントエンドを実現します。
Release 4では、既存のアルゴリズム(Round Robin、IP Hash、Least Connections)に、新しい負荷分散アルゴリズムである「Hash」が追加されました。Hashベースの負荷分散では、送信元IPアドレスとポート、URLなど、任意に組み合わせたリクエストパラメーターのハッシュ関数に基づいて、アップストリームグループ全体にトラフィックを均等に分散できます。
オプションのconsistentパラメーターをhashディレクティブで有効にすると、Hash方式が非常に有用になります。これにより、コンシステントハッシュによる負荷分散が可能になります(memcachedとの相互運用性を確保するため、ketama負荷分散方式を使用)。これは、キャッシュサーバーや状態を蓄積するその他のアプリケーションの負荷を分散する際に大きなメリットとなります。

With コンシステントハッシュでは、ユーザーが指定したキーのハッシュ値に基づいて、リクエストが対象サーバー間に均等に分散されます。サーバーが追加または削除された場合(障害が発生した場合など)、キャッシュミスを最小限に抑えるため、必要最小限のハッシュ空間のみが再分配されます。均等に分散するため、NGINX Plusのketamaベースの実装では、ハッシュ空間内でサーバーごとに160ポイントを使用します(上の図では8ポイントのみを示しています)。
Release 4では、既存のメカニズム(sticky routeとsticky cookie)に加えて、新しいセッションアフィニティメカニズムであるsticky learnも追加されました。learnメカニズムは非常に柔軟です。NGINX Plusは、各サーバーが開始したセッションを動的に学習し、クライアントリクエスト内のセッションシグネチャを識別できます。アップストリームグループ内でのリクエストのルーティングをきめ細かく制御する必要がある場合、この機能は幅広く活用できます。
最後に、キャッシュによってアップストリームサーバーの負荷をさらに効果的に軽減できるようになりました。キャッシュの再検証では、コンテンツが変更されていないことを確認するために、ETagに加えてLast-Modifiedタイムスタンプも使用できます。
モニタリングをより簡単に — 必要なデータを詳しく分析
ログおよび監視データをフィルタリングして掘り下げる手法により、必要な情報に焦点を絞ることができます。
NGINX Plusは、access_logと独自の「ライブアクティビティモニタリング」機能を通じて、豊富なデータを生成します。データ量が膨大になると、収集、保存、分析にかかるコストが過大になる場合があります。特に、多数のサービスとユーザーを抱えるアクセスの多いサイトでは、その傾向が顕著です。
条件付きロギングをアクセスログに使用すると、記録する必要があるリクエストを定義し、重要度の低いリクエストを除外できます。これは実行時の判断に非常に役立ちます。たとえば、5xxサーバーエラーが発生したリクエストだけを記録したり、ローカルネットワークからのリクエストを除外したりできます。また、外部ヘルスモニターが生成する不要なデータを取り除くことも可能です。要件を問わず、実行時にログエントリをフィルタリングして制限するには、条件付きロギングが有効です。
以前のリリースのNGINX Plusでは、extended status moduleが生成するライブアクティビティ監視データをリクエストすると、現在のアクティビティと状態を示す膨大な量の内部データが返されていました。しかし、監視する対象が1つのカウンター(リクエスト数など)だけの場合や、アップストリーム内のノードのヘルスステータスだけを取得したい場合、ステータスデータ一式を取得するのは非効率です。Release 4では、RESTful APIを使用してデータを掘り下げ、データの一部または単一の値だけを取得できるため、より効率的かつ軽量な監視が可能です。

NGINX Plus R4のその他の新機能
NGINX Plus R4には、NGINX 1.7.3リリースのその他の最新アップデート、修正、新機能も継承されています。また、nginx-plus-luaおよびnginx-plus-extrasパッケージに含まれるサードパーティ製モジュールは、Luaバージョン 0.9.10およびPassenger Open Sourceバージョン 4.0.45を使用するように更新されています。
ベンダーがサポートしているオペレーティングシステムディストリビューションのバージョンをサポートするという方針に基づき、CentOS/RHEL 7のサポートを追加し、Ubuntu 12.10、13.04、13.10のサポートを終了しました。
Release 4の新機能と変更点の完全な一覧については、「NGINX Plus Releases」ページをご覧ください。
NGINX Plusをご利用の場合は、できるだけ早くRelease 4に更新することを強く推奨します。更新により、複数の修正と改善が適用され、サポートチケットを起票する必要が生じた際に、より円滑なサポートが可能になります。インストールおよびアップグレードの手順については、NGINX Plusカスタマーポータルをご覧ください。
NGINX Plusをまだお試しでない場合は、今すぐ30日間の無料トライアルを開始し、NGINX Plusがアプリケーションのスケールアウトと配信にどのように役立つかをご確認ください。
著者について

関連するブログ記事
チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。
AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。
JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。
F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。
NGINX PlusによるAWS Auto Scalingグループの負荷分散
新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります