ブログ | NGINX

NGINX Plus R7 の発表

NGINX-F5 水平黒タイプ RGB の一部
オーウェン・ギャレット サムネイル
オーウェン・ギャレット
2015 年 9 月 16 日公開

NGINX, Inc. は、アプリケーション配信プラットフォームの最新リリースである NGINX Plus Release 7 (R7) の提供開始を発表いたします。 このアップデートでは、主要な Web サーバーとしては初となる、新しい HTTP/2 Web 標準の完全サポート実装が提供されます。 NGINX Plus は、新規および既存の Web サービスの両方に対してフロントエンド HTTP/2 ゲートウェイおよびアクセラレータとして導入できます。

[編集者 – この投稿は、元の投稿で言及されていた個別のステータス モジュールを置き換えて非推奨とするNGINX Plus APIを参照するように更新されました。]

最新のアップデートでは、組織がエンタープライズ アプリケーションに必要なパフォーマンス、セキュリティ、信頼性を備えたアプリケーションを提供できるように、大幅な改善と追加機能も追加されています。 これには、アプリケーションの監視、管理、デバッグを容易にする重要な機能強化や、追加のセキュリティおよびパフォーマンス最適化機能が含まれます。

編集者 – NGINX Plus R7の主な新機能の詳細については、以下の関連ブログ投稿をご覧ください。

オンデマンド ウェビナー「NGINX Plus R7 の新機能」もご覧ください。

このリリースの主な機能は次のとおりです。

  • HTTP/2 の完全サポートされた実装– NGINX Plus は、新しい HTTP/2 Web 標準の完全サポートされた実装を提供するようになりました。 NGINX Plus は、新規および既存の Web サービスの両方のフロントエンド HTTP/2 ゲートウェイおよびアクセラレータとして導入できます。

    HTTP/2 サポートは、オプションのnginx-plus-http2パッケージでのみ利用できます。 nginx-plusおよびnginx-plus-extrasパッケージは SPDY サポートを提供し、より広範なブラウザ サポートとコードの成熟度により、現在は実稼働サイトに推奨されています。

    注記アルファレベルのパッチのユーザーテストと、企業共同スポンサーである Automattic および Dropbox からの早期サポートに基づき、HTTP/2 の最終的なオープンソースバージョンは、R7 のリリース後に利用可能になります。

  • パフォーマンスが大幅に向上NGINX Plus R7 は非同期 I/O用のスレッド プールをサポートします。 これにより、コンテンツ キャッシュなどの高レベルのディスク I/O を伴うワークロードが高速化されます。 当社のベンチマークによると、スレッド プールにより、特定のワークロードのパフォーマンスが最大 9 倍向上することが示されています。

    NGINX Plus R7 は、マルチコア サーバーでのパフォーマンスを向上させるソケット シャーディングの最適化もサポートしています。 当社のベンチマークでは、これにより1 秒あたりのリクエスト数が増加し、レイテンシがそれぞれ 3 倍以上短縮されることが示されています。 ソケット シャーディングではSO_REUSEPORTオプションが使用され、現在は Linux 3.9 以降または DragonFly BSD が必要です。
  • アクセス制御とセキュリティの強化- NGINX Plus の新機能と拡張機能により、アプリケーションのセキュリティと信頼性が向上します。 TCP サービスのアクセス制御と接続制限により、NGINX が管理するすべてのサービスに保護ルールを適用できます。また、NT LAN Manager (NTLM) 認証のサポートにより、NGINX Plus を従来の Microsoft アプリケーションの前面に展開できます。
  • 監視と診断の改善- NGINX Plus では、既存のステータスおよびダッシュボード ツールにさらに詳細な監視および統計データが追加されます。 クライアント エラー、内部 NGINX アクティビティ、サービスの SSL 負荷を追跡して、問題を特定し、構成を調整します。
  • 更新されたインタラクティブな NGINX Plus ダッシュボード– NGINX Plus のライブ アクティビティ監視ダッシュボードが大幅に拡張され、NGINX のパフォーマンスと健全性のより詳細なビューを提供するタブ付きインターフェイスが提供されるようになりました。 ドリルダウンしてインフラストラクチャの問題を特定して理解し、構成を迅速に変更することができます。

「私たちは過去1年間に何百もの新規顧客がNGINX Plusを使用してアプリケーションを導入するのを支援してきましたが、私たちの最新リリースは、ユーザーに可能な限り最高のエクスペリエンスを保証するためのさらに多くのツールを提供することが目的です」とNGINX, Inc.のCEO、ガス・ロバートソン氏は述べています。 「当社はお客様のインフラストラクチャーの基盤であり、お客様が導入するアプリケーションに対して比類のない可視性と制御を提供できるユニークな立場にあります。 当社は顧客のビジネスにおける重要な役割を真剣に受け止めており、NGINX Plus R7 の新機能はそれを反映しています。」

NGINX の採用はここ数か月で大幅に増加しました。 NGINX は上位 100,000 の Web サイトで第 1 位の Web サーバーであり、世界で最もアクセスの多いサイトのほぼ半数が NGINX を使用して数十億のユーザーにアプリケーションを提供しています。 NGINX, Inc. は、最小かつ軽量のアプリから世界最大のプラットフォームまで、すべての人にとって完璧なアプリケーション配信を容易にするために、オープンソース ツールと商用サポート ツールの両方に多額の投資を続けています。

NGINX Plus R7 の機能詳細

このセクションでは、 NGINX Plus R7のすべての新機能と機能の詳細な概要を説明します。

HTTP/2 の完全サポート実装

NGINX Plus R7 は、新しいnginx-plus-http2パッケージを通じて、HTTP プロトコルの最新バージョンである HTTP/2 のサポートを提供します。 HTTP/2 は、最新の Web アプリケーションのパフォーマンスとセキュリティを向上させます。 NGINX Plus の HTTP/2 サポートは、既存のサイトやアプリに変更を加えることなく、NGINX Plus 構成に最小限の変更を加えるだけで、シームレスに動作します。 NGINX Plus R7 は完全な下位互換性があり、HTTP/1.x と HTTP/2 の両方のトラフィックを並行して配信できるため、ユーザーがどのブラウザを選択しても最高のエクスペリエンスが得られます。

HTTP/2 への移行を容易にするために、NGINX Plus は「HTTP/2 ゲートウェイ」として機能します。 フロントエンドでは、NGINX Plus はそれをサポートするクライアント Web ブラウザーと HTTP/2 で通信し、バックエンドでは以前と同じように HTTP/1.x (または FastCGI、SCGI、uWSGI など) で通信します。 つまり、NGINX Plus によってプロキシされるサーバーとアプリケーションは、HTTP/2 への移行による影響を受けず、クライアントがどの HTTP バージョンを使用しているかを知る必要さえありません。

HTTPS と HTTP/2 を並行してサポートするために、NGINX Plus は TLS の Next Protocol Negotiation (NPN) と Application‑Layer Protocol Negotiation (ALPN) の両方の拡張機能をサポートしています。 これらの拡張機能は、クライアントとサーバーの両方が HTTP/2 をサポートしている場合に、HTTPS 接続を HTTP/2 にシームレスにアップグレードするために使用されます。

必要な構成変更は、既存のlistenディレクティブにhttp2パラメータを追加することだけです。 HTTP/2 はsslパラメータも含まれている場合にのみサポートされることに注意してください。

サーバー { listen 443 ssl http2 default_server; }

HTTP/2 サポートを有効にするには、NGINX Plus リポジトリからnginx-plus-http2パッケージをインストールします。 このパッケージは SPDY/3.1 をサポートしていません。 標準のnginx-plusおよびnginx-plus-extrasパッケージは、HTTP/2 ではなく SPDY/3.1 をサポートしており、より広範なブラウザ サポートとコードの成熟度により、現在は実稼働サイトに推奨されています。 現時点では、 nginx-plus-extrasパッケージの HTTP/2 対応バージョンはビルドされていないことに注意してください。

HTTP/2 の詳細については、以下を参照してください。

パフォーマンスが大幅に向上

NGINX Plus R7には、アプリケーションのパフォーマンスをさらに向上させる数多くのパフォーマンス強化が含まれています。 スレッド プールの最適化のサポートが追加され、潜在的にブロックするディスク操作の負荷を軽減し、大量のディスク I/O を伴うワークロード (コンテンツ キャッシュなど) のパフォーマンスが向上します。 NGINX Plus R7 には、多数の nginx プロセスがトラフィックを処理する大規模なマルチコア サーバーの効率を向上させるソケット シャーディング最適化(Linux 3.9 以降または Dragonfly BSD が必要) も含まれています。 これらは、NGINX オープンソースの導入現場でテストされており、現在は NGINX Plus の一部として完全にサポートされています。

スレッドプール

NGINX Plus でスレッド プールを使用すると、パフォーマンスが 9 倍向上します。 NGINX が接続の処理に非同期のイベント駆動型アプローチを使用することはよく知られています。 しかし、非同期のイベント駆動型アプローチには、ブロッキングという問題が残っています。 Linux では、ディスク操作はブロックされるため、大量のディスク I/O を伴う操作中、NGINX は生産的な作業を行うのではなく、ブロックに多くの時間を費やす可能性があります。

ディスク I/O を処理するスレッドのプールを割り当てると、この問題は軽減されます。 NGINX ワーカー プロセスは、ディスク自体にアクセスする代わりに、プール内の使用可能なスレッドに I/O 操作を渡して、通常どおりトラフィックの処理に戻ります。 ディスク操作が完了すると、NGINX ワーカー プロセスに通知され、要求を満たすために残っている作業を続行できます。

スレッド プールを有効にするには、ロケーションブロックにaio threadsディレクティブを追加するだけです。

場所 / { ルート /ストレージ; aio スレッド; }

NGINX のスレッド プールの詳細な概要については、このブログ投稿を参照してください。

ソケットシャーディング

ソケット シャーディングは、NGINX 1.9.1 で初めて導入されました。 この機能は、Linux カーネルのバージョン 3.9 で導入されたSO_REUSEPORTソケット オプションを活用します。 このオプションを有効にすると、Linux カーネル自体がラウンドロビン方式で新しい接続を NGINX ワーカー プロセス全体に均等に分散します。 ワーカー プロセスは、リクエストの制限、キャッシュ、負荷分散、および構成したその他のすべての作業を実行します。

SO_REUSEPORTがない場合、新しい接続は利用可能なすべてのワーカープロセスに提供されます。 キューから最初に接続を取得した人が接続を取得します。 負荷を均等に分散するアルゴリズムがないため、いくつかのワーカー プロセスが負荷の大部分を占め、他のワーカー プロセスが十分に活用されないという偏りが生じやすくなります。 プロセスがパケットをめぐって争うことも非効率的です。ロックの競合が発生する可能性があるからです。

ソケット シャーディングにより、NGINX ワーカー プロセス間で作業が均等に分散されるため、パフォーマンスが最大 3 倍向上します。 この機能を有効にするには、既存のlistenディレクティブに新しいreuseportパラメータを追加します。

サーバー {リッスン 12345再利用ポート; # ... }

この機能の詳細については、こちらのブログ投稿を参照してください。

注記: この機能には、Linux カーネル バージョン 3.9 以降が必要です。 Ubuntu 13.10 以降および Red Hat Enterprise Linux 7 以降には必要な機能が含まれています。

アクセス制御とセキュリティの強化

NGINX Plus R7 には、アプリケーションのセキュリティを向上させる機能がさらに追加されています。 このセクションでは、それらの機能の概要を説明します。

TCP アクセス制御と制限

TCP プロキシと負荷分散の新機能により、アクセス制御 (IP アドレスによる制限)、接続制限 (クライアントまたはサービスごとの同時接続数の制限)、および帯域幅の使用 (接続ごとのアップストリームまたはダウンストリーム帯域幅の制限) が改善されます。 これらの機能はすでに HTTP 負荷分散に使用されており、API メータリングや DDoS 保護に非常に効果的に使用されています。

詳細については、関連ブログ投稿「NGINX Plus R7 の TCP ロードバランシング」<.htmlspan>を参照してください。

NTLM サポート

多くの要望に応えて、 NGINX Plus R7 は認証に Microsoft NT LAN Manager ( NTLM ) を使用するアプリケーションのプロキシと負荷分散を行うことができます。 NTLM は、多くの Microsoft 製品、特にレガシー アプリケーションで使用される認証プロトコルです。

当社の NTLM サポートは、バックエンド サーバーへの接続が維持されながら多重化されないというセキュリティ要件を満たし、NTLM 認証された各クライアントがバックエンド サーバーへの固有の専用接続を持つようになります。

NTLM サポートを有効にするには、HTTP アップストリーム グループの構成にntlmディレクティブを追加します。

アップストリームバックエンド { サーバー 192.168.1.10; サーバー 192.168.1.11; ntlm ; }

可能な限り幅広いクライアント デバイスをサポートし、NGINX を Microsoft アプリケーションの前面にプロキシ、ロード バランサ、HTTP/2 アクセラレータとして自信を持って導入できるようになりました。

監視と診断の改善

NGINX Plus は詳細な監視と統計を提供し、アプリケーションとインフラストラクチャの監視、最適化、デバッグを容易にします。 その機能を基に、 NGINX Plus R7 には新しいカウンターと統計が搭載されています。 これらのカウンターは、NGINX Plus のデプロイメントを調整し、より多くの負荷を処理するためにスケールアップまたはスケールアウトする必要があるタイミングについて情報に基づいた決定を下すのに役立ちます。 新しい統計とカウンターは次のとおりです。

  • 499 エラー– サーバーごとのカウンタで、499バックエンド サーバーが要求の処理を完了する前にクライアントが接続を閉じた場合に発生するエラーです。 いくつか499エラーは許容範囲です (セッションの途中で Web ブラウザを閉じる人が多いため) が、エラー数が大きい場合は、サーバーが過負荷になっていて、リクエストの処理に時間がかかっていることを示している可能性があります。
  • NGINX Plus ワーカーの再起動– NGINX Plus ワーカーが再起動した回数。 これは、NGINX Plus ワーカー プロセスのクラッシュを検出するのに役立ちます。
  • NGINX Plus のリロード– NGINX Plus がリロードされた回数。 これにより、NGINX Plus が実際にリロードされたか、不適切な構成などのさまざまな理由によりリロードが失敗したことが確認されます。
  • キュー オーバーフロー– サーバーが負荷をどの程度適切に処理しているかを測定するサーバーごとのカウンター。 キューのオーバーフローの数が多いということは、サーバーが対応に苦労していることを示します。
  • SSL ハンドシェイク– 完了した SSL ハンドシェイクの数。
  • 再利用された SSL セッション– 以前のセッションから再利用された SSL セッションの数。
  • 新しい SSL セッション– ネゴシエートされた新しい SSL セッションの数。

他のすべてのカウンターと同様に、構成にapiディレクティブを含めることで新しいカウンターを有効にします。

更新されたインタラクティブな NGINX Plus ダッシュボード

NGINX Plus ダッシュボードはR7 で大幅に改善され、大規模で複雑な構成でも重要なシステム情報が簡潔な形式で表示されます。

  • 新しいダッシュボードの概要タブには、NGINX Plus アクティビティの完全な 1 ページの概要と、アプリケーションの健全性の概要が表示されます。
  • ダッシュボードのインターフェースを使用すると、負荷分散プール内のサーバーを一時的に追加および削除したり、サーバーを一時的にドレインまたは非アクティブとしてマークしたりできます。
  • 新しいフィルターを使用すると、障害が発生したサーバーをすばやくドリルダウンして見つけることができます。
  • 新しいタブ付きビューを使用すると、ダッシュボードタブからゾーン、アップストリーム、キャッシュ情報のより詳細なビューにすばやく切り替えることができます。
  • ダッシュボード全体で、新しいツールヒントにより、アップストリーム サーバー、構成の再読み込み、キャッシュ ステータス、エラー メッセージに関するより詳細な情報が提供されます。

詳細については、関連ブログ投稿「新しい NGINX Plus ダッシュボード<.htmla>」を参照してください。

もう少しのお楽しみ

NGINX Plus R7 には、上記のいずれのカテゴリにも当てはまらない追加の機能強化が多数あります。

  • HLS ストリーミングの改善- NGINX Plus は、HLS .m3u8 URI のstartendoffset引数をサポートするようになりました。 これにより、コンテンツ パブリッシャーはビデオ ストリームのフラグメントへのリンクを簡単に公開できるようになります。
  • コンテンツの変更– 以前は、NGINX Plus は、ある文字列を別の文字列に置き換えるという単純な 1 つの変更のみをレスポンスのコンテンツに対して行うことができました。 sub_filterディレクティブが拡張され、変数と置換チェーンがサポートされるようになり、より複雑な変更が可能になりました。

    拡張されたコンテンツ変更機能により、メッセージ コンテンツ内のハイパーリンクのメソッド ( http://ではなくhttps:// )、ドメイン、またはその他のパス要素を変更するなど、Web コンテンツを簡単に適応させることができます。 また、元の HTML コンテンツを変更することなく、定型テキストや JavaScript スニペットなどのコンテンツを HTML ページに挿入することもできます。

  • $upstream_connect_time変数 – バックエンド サーバーへの接続にかかる時間を追跡する新しいNGINX 変数。これにより、遅いサーバーを簡単に識別できるようになります。
  • 構成ダンプnginxコマンドの新しい‑Tフラグは、解析された NGINX 構成を明確で標準化された形式で stdout にダンプします。 これは、アーカイブ目的やサポート チケットを提出するときに役立ちます。
  • より設定可能な TCP 負荷分散proxy_bindproxy_protocoltcp_nodelayディレクティブ、およびlistenディレクティブのbacklogパラメータが、HTTP トラフィックだけでなく TCP トラフィック ( streamモジュール) でもサポートされるようになりました。 詳細については、 「NGINX Plus R7 の TCP ロード バランシング」<.htmlspan>を参照してください。
  • Redis サポート– サードパーティのRedisモジュール ( lua-resty-redis ) がnginx-plus-extrasパッケージに組み込まれました。 これにより、NGINX Plus は Redis データベースと対話 (値の取得や設定など) できるようになり、NGINX Plus サブスクリプションの一部として完全にサポートされます。
  • Phusion Passenger モジュールの更新– Phusion Passenger オープンソース モジュールがバージョン 5.0.15 に更新されました。

Phusion Passenger オープンソースを NGINX Plus と互換性のあるものにアップグレードする

Phusion Passenger Open Source をNGINX Plus と併用する場合 ( passenger_rootディレクティブが構成に含まれている場合)、 NGINX Plus R7 nginx-plus-extrasパッケージにアップグレードすると同時に、Passenger ランタイムをバージョン 5.0.15 にアップグレードする必要があります。 次の手順を実行します (コマンドは Ubuntu に適しています)。

  1. NGINX Plusを停止します。

    #サービス nginx を停止
  2. Phusion Passenger ランタイムを 5.0.15 にアップグレードします。

    # apt-get install パッセンジャー
  3. NGINX Plus Extras パッケージを R7 にアップグレードします。

    # apt-get install nginx-plus-extras
  4. Phusion Passengerアップグレード ノートの説明に従って、NGINX Plus 構成ディレクティブに必要な更新を加えます。

  5. NGINX Plusを起動します。

    #サービス nginx を開始

完全なインストールおよびアップグレードの手順は、NGINX Plusカスタマー ポータルで参照できます。

NGINX Plus をアップグレードまたは試用する

NGINX Plus を実行している場合は、できるだけ早くリリース 7 にアップグレードすることを強くお勧めします。 数多くの修正と改善が行われており、サポート チケットを発行する必要がある場合に、当社がサポートしやすくなります。 インストールおよびアップグレードの手順については、カスタマー ポータルをご覧ください。

NGINX Plus をまだお試しいただいていない方は、Web アクセラレーション、負荷分散、アプリケーション配信、または強化された監視および管理API を備えた完全にサポートされた Web サーバーとして、ぜひお試しください。 今すぐ30 日間の無料評価版を始めて、NGINX Plus がアプリケーションのスケールアウトと配信にどのように役立つかを実際に確認することができます。

注意点

  • NGINX Plus R7 は、Debian 6、SLES 11 SP3、Ubuntu 10.04 LTS または 14.10 をサポートしなくなりました。これらのディストリビューションは一般にサポートされなくなったためです。 NGINX Plus R7にアップグレードする前に、サポートされているオペレーティング システム ディストリビューションにアップグレードしてください。
  • NGINX Plus R7 は、 nginx-plus-luaパッケージを含む最後のリリースです。このパッケージを使用している場合は、 NGINX Plus リリース 8nginx-plus-extrasパッケージに移行することを計画してください。
  • nginx-plus-http2パッケージをインストールする前に、構成内のすべてのlistenディレクティブのspdyパラメータを削除する必要があります (HTTP/2 のサポートを有効にするには、 http2およびsslパラメータに置き換えます)。 nginx-plus-http2パッケージでは、 listenディレクティブにspdyパラメータが含まれていると、NGINX Plus の起動に失敗します。

「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"