NGINX Plus R11を発表

NGINX | 2016年10月25日

NGINX Plus Release 11(R11)の提供開始をお知らせします。本リリースでは、製品の拡張やカスタマイズを容易にし、さらに幅広い導入環境に対応するため、NGINX Plusに多数の新機能を追加しました。

NGINX Plus R11では、動的モジュールのバイナリ互換性が導入されました。これにより、NGINX Open Source向けにコンパイルされた動的モジュールをNGINX Plusにロードできます。

多数のサードパーティ製NGINXモジュールを活用し、オープンソースや商用のさまざまなモジュールを利用して、NGINX Plusの機能を拡張、追加できます。開発者は、サポート対象のNGINX Plusコアを基盤として、カスタム拡張機能、アドオン、新製品を作成できます。

NGINX Plus R11では、ほかにも次のような機能強化が追加されています。

  • TCP/UDPロードバランシングの改善 – 新機能には、SSLサーバー名ルーティング、新しいログ機能、追加の変数、PROXYプロトコルサポートの改善が含まれます。これらの新機能により、デバッグ機能が強化され、より幅広いエンタープライズアプリケーションをサポートできるようになります。
  • IPアドレスによる位置情報特定の向上 – サードパーティ製のGeoIP2モジュールが認定され、NGINX Plusのお客さまに提供されるようになりました。この新バージョンでは、従来のGeoIPモジュールよりも地域に適した詳細な位置情報を提供します。
  • 強化されたNGINX JavaScriptモジュール – NGINX JavaScriptは、JavaScriptをベースとしたNGINX Plus向けの次世代構成言語です。新機能により、Stream(TCP/UDP)モジュールでリクエストとレスポンスのデータを動的に変更できます。

NGINX Plus R11の詳細

動的モジュールのバイナリ互換性

NGINXコミュニティは、NGINX Open Source向けに、多岐にわたる拡張モジュールを開発してきました。これには、セキュリティソリューション、認証モジュール、さらにはLuaのような完全なアプリケーションランタイム環境も含まれます。

F5では、これらのサードパーティ製モジュールの一部をNGINX Plus向けにビルドおよび保守し、リリースごとに更新してNGINX Plusリポジトリから配布しています。これらのビルドはNGINX Plusで正しく動作することが認定されており、サポートチームがインストールと基本設定に関するテクニカルサポートを提供します。

R11リリースでは、対応するNGINX Open Sourceリリースに準拠した任意のサードパーティ製モジュールをコンパイルし、NGINX Plusに安全にロードできるようになりました。

NGINX Plusの各リリースは、NGINX Open Sourceの特定のバージョンを基盤として構築されています。対応するオープンソースのバージョン番号を確認するには、nginx -vを実行します。NGINX Plus R11の場合は、NGINX 1.11.5です。

$ nginx -vnginx version: nginx/1.11.5 (nginx-plus-r11)

動的モジュールをコンパイルするには、まず使用しているNGINX PlusバージョンのベースとなるNGINXソースコードを入手します(ここではNGINX Plus R11用の「nginx-1.11.5」です)。

$ wget https://nginx.org/download/nginx-1.11.5.tar.gz$ tar -xzvf nginx-1.11.5.tar.gz

次に、新しいconfigureコマンドを--with-compat引数とともに実行し、NGINX Plusと互換性のある標準ビルド環境を作成します。

$ cd nginx-1.11.5$ ./configure --with-compat --add-dynamic-module=/path/to/module
$ make modules

NGINX Plusで使用する独自モジュールのコンパイル方法について詳しくは、ブログ記事「Compiling Dynamic Modules for NGINX Plus<.htmla>」をご覧ください。

お客さまご自身でコンパイルしたモジュール(コミュニティモジュール、サードパーティパートナーが提供するモジュール、カスタムモジュール)は、NGINXによるテストおよびサポートの対象外です。問題についてテクニカルサポートを依頼された場合、NGINXテクニカルサポートチームは、サポート対象外のモジュールが障害の原因かどうかを確認するため、テクニカルサポートプロセスの一環として、そのモジュールを削除して障害を再現するようお願いすることがあります。

TCP/UDPロードバランシングの改善

NGINX Plus R11では、TCPおよびUDPの負荷分散に対する主要な機能強化により、さらに幅広いアプリケーションをサポートします。

SSLサーバー名ルーティング

NGINX PlusのTCP/UDPロードバランサーを使用して、SSL/TLS接続を復号せずに負荷分散できるようになりました。これは、セキュアな環境やトラフィック量の多い環境で、SSL/TLSで暗号化された接続をリモートサーバーに転送する場合に役立ちます。

新しいSSLサーバー名の事前読み取り機能により、NGINX Plus R11は受信する各SSL/TLS接続を検査し、接続のルーティング先となるターゲットドメイン(Server Name Indication [SNI]値など)を特定できます。

SSLサーバー名は、新しい変数「$ssl_preread_server_name」で提供されます。この変数には、SSL/TLSハンドシェイクのSNIフィールドから抽出されたターゲットホスト名が格納されます。

この変数は、proxy_passディレクティブの引数として、または仮想サーバーのアクセスログのフィールドとして使用できます。この機能を有効にするには、次の例に示すように、構成にssl_prereadディレクティブを含める必要があります。

コード例を読み込み中…

アクセスログのサポート

NGINX Plus R11の新しい「Stream Log」モジュールでは、以前のリリースでHTTP接続向けに提供されていたものと同様のアクセスログ機能をTCP/UDP接続でも利用できます。「Stream」モジュールで処理される各TCP/UDPセッションをログに記録し、データレート、負荷分散の判断、エラー状態などを確認できるようになりました。これは、TCPまたはUDPトランザクションのデバッグや監査に不可欠な機能です。

Streamモジュールでは多数の変数が公開されており、そのすべてをログに記録できます。次のように変数を使用して、デフォルトのログ形式をカスタマイズできます。

コード例を読み込み中…

PROXY Protocolサポートの強化

このリリースでは、NGINX PlusがPROXYプロトコルで拡張されたTCP接続を受け入れられるようになり、TCP接続向けの「PROXYプロトコル」のサポートがさらに充実しました。

この機能により、ログ記録や認証に使用する接続元の実際のIPアドレスを特定できるため、NGINX PlusでTCP接続をより適切に管理できます。

追加の拡張ステータスメトリクス

The Statusモジュールで、streamカテゴリのより多くのメトリクスが報告されるようになりました。これには、処理したセッション数や各種エラー条件の発生回数が含まれます。

Stream Logモジュールの新しい「access_log」コマンドと追加されたメトリクスにより、TCPおよびUDPサービスの動作を監視し、エラー発生率の異常を検出しやすくなります。

[編集者注:Statusモジュールは非推奨となり、NGINX Plus APIモジュールに置き換えられました。このモジュールはNGINX Plus R13で導入されました。]

位置情報の精度を高めるGeoIP2 Module

サードパーティ製の「GeoIP2 module」が認定され、NGINX PlusユーザーはF5のリポジトリから利用できるようになりました。GeoIP2 moduleはMaxMindのGeoIP2形式のデータベースを使用します。このデータベースはローカライズされた名称を提供し、従来のGeoIP moduleで使用されていたデータベースよりも詳細な情報を収録しています。

新しいモジュールを入手するには、次のコマンドを実行します(DebianおよびUbuntu向け)。

$ apt-get update$ apt-get install nginx-plus-module-geoip2

In the main (top‑level) context in /etc/nginx/nginx.confのmain(最上位)コンテキストに、新しくインストールしたモジュールのための「load_module」ディレクティブを追加します:

コード例を読み込み中…

GeoIP2モジュールの詳細については、GitHub公式ページをご覧ください。

NGINX JavaScript Moduleの機能強化

編集者 – 以下は、NGINX JavaScriptモジュールの数あるユースケースの1つです。すべてのユースケースの一覧については、「NGINX JavaScriptモジュールのユースケース」を参照してください。

この投稿は、sで導入されたStreamモジュール用のリファクタリング済みsession(NGINX JavaScript 0.2.4)オブジェクトを使用するよう更新されています。

NGINX JavaScriptは、NGINXおよびNGINX Plus向けの次世代構成言語です。NGINX JavaScriptでは、使い慣れたJavaScript構文を使用して、標準のNGINX構成言語では実現できない、より複雑な処理を実行できます。このリリースでは、NGINX JavaScriptモジュールに複数の機能強化が加えられています。

NGINX JavaScriptは現在も開発中であり、今回のリリースに含まれる更新は、最終的に予定されている機能の実現に向けたものです。このマイルストーンでは、Streamモジュールとの統合と、より広範なJavaScript言語サポートという2つの領域に重点を置きました。

Streamモジュールでは、NGINX JavaScriptから複数の内部リクエスト処理フェーズにアクセスし、データを検査および変更できます。たとえば、次のNGINX JavaScriptコードは、MySQLプロトコルストリームの3番目のメッセージを検査し、主要なパターンを検索してSQL操作を特定する方法を示しています。

コード例を読み込み中…

NGINX JavaScriptコアの「言語サポート」が大幅に拡張され、より多くの組み込みオブジェクトと関数がサポートされるようになりました。更新内容は「Mercurialソースリポジトリ」およびNGINX Plusパッケージリポジトリで公開されます。

キャッシュパフォーマンスの向上

NGINX Plusは、ディスクキャッシュの整理を担う独立した「キャッシュマネージャー」プロセスを実行します。大量のメモリを解放する必要がある場合など、状況によっては、キャッシュマネージャーが多数のファイルを削除しなければならないことがあります。

新しい「unlink throttling」機能では、キャッシュファイルの最大削除速度を指定できます。削除速度を低く設定すると、基盤となるディスクの負荷が軽減され、システムパフォーマンスが向上する可能性があります。

削除速度は、manager_files、manager_threshold、manager_sleepの各新規パラメーターによって制御されます。これらのパラメーターは、proxy_cache_path、fastcgi_cache_path、scgi_cache_path、uwsgi_cache_pathの各ディレクティブに指定します。

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

NGINX Plusをご利用の場合は、ご都合のよいときにRelease 11へアップグレードすることを推奨します。多数の修正と改善が適用されるほか、サポートチケットを起票する必要が生じた際に、より円滑なサポートが可能になります。インストールとアップグレードの手順については、カスタマーポータルをご覧ください。

注: 以前にお知らせしたとおり、NGINX Plus R11以降にはnginx-plus-extrasパッケージは含まれていません。このパッケージを引き続き使用している場合は、代わりにnginx-plusパッケージをデプロイし、必要な追加モジュールをNGINX Plusモジュールリポジトリから動的にロードする必要があります。

まだNGINX Plusをお試しでない場合は、Webアクセラレーション、負荷分散、アプリケーションデリバリーに、または強化された監視および管理APIを備えた、フルサポートのWebサーバーとして、ぜひお試しください。今すぐ30日間の無料トライアルを開始し、NGINX Plusがアプリケーションのデリバリーとスケールアウトにどのように役立つかをご確認いただけます。


共有

著者について

Owen Garrett
Owen Garrettプロダクトマネジメント担当シニアディレクター

Owen Garrettのその他のブログ記事

関連するブログ記事

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
NGINX | 2024/01/18

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する

OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
NGINX | 2023/05/31

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
NGINX | 2023/02/09

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法

Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINX | 2022/05/24

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング

NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
NGINX | 2018/08/17

SELinuxでNGINXおよびNGINX Plusを使用する

Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。

NGINX PlusによるAWS Auto Scalingグループの負荷分散
NGINX | 2017/03/06

NGINX PlusによるAWS Auto Scalingグループの負荷分散

新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります