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 の新機能」もご覧ください。
このリリースの主な機能は次のとおりです。
注記: アルファレベルのパッチのユーザーテストと、企業共同スポンサーである Automattic および Dropbox からの早期サポートに基づき、HTTP/2 の最終的なオープンソースバージョンは、R7 のリリース後に利用可能になります。
SO_REUSEPORT
オプションが使用され、現在は Linux 3.9 以降または DragonFly BSD が必要です。「私たちは過去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のすべての新機能と機能の詳細な概要を説明します。
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 プロキシと負荷分散の新機能により、アクセス制御 (IP アドレスによる制限)、接続制限 (クライアントまたはサービスごとの同時接続数の制限)、および帯域幅の使用 (接続ごとのアップストリームまたはダウンストリーム帯域幅の制限) が改善されます。 これらの機能はすでに HTTP 負荷分散に使用されており、API メータリングや DDoS 保護に非常に効果的に使用されています。
詳細については、関連ブログ投稿「NGINX Plus R7 の TCP ロードバランシング」<.htmlspan>を参照してください。
多くの要望に応えて、 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 ブラウザを閉じる人が多いため) が、エラー数が大きい場合は、サーバーが過負荷になっていて、リクエストの処理に時間がかかっていることを示している可能性があります。他のすべてのカウンターと同様に、構成にapi
ディレクティブを含めることで新しいカウンターを有効にします。
NGINX Plus ダッシュボードはR7 で大幅に改善され、大規模で複雑な構成でも重要なシステム情報が簡潔な形式で表示されます。
詳細については、関連ブログ投稿「新しい NGINX Plus ダッシュボード<.htmla>」を参照してください。
NGINX Plus R7 には、上記のいずれのカテゴリにも当てはまらない追加の機能強化が多数あります。
start
、 end
、 offset
引数をサポートするようになりました。 これにより、コンテンツ パブリッシャーはビデオ ストリームのフラグメントへのリンクを簡単に公開できるようになります。コンテンツの変更– 以前は、NGINX Plus は、ある文字列を別の文字列に置き換えるという単純な 1 つの変更のみをレスポンスのコンテンツに対して行うことができました。 sub_filter
ディレクティブが拡張され、変数と置換チェーンがサポートされるようになり、より複雑な変更が可能になりました。
拡張されたコンテンツ変更機能により、メッセージ コンテンツ内のハイパーリンクのメソッド ( http://ではなくhttps:// )、ドメイン、またはその他のパス要素を変更するなど、Web コンテンツを簡単に適応させることができます。 また、元の HTML コンテンツを変更することなく、定型テキストや JavaScript スニペットなどのコンテンツを HTML ページに挿入することもできます。
$upstream_connect_time
変数 – バックエンド サーバーへの接続にかかる時間を追跡する新しいNGINX 変数。これにより、遅いサーバーを簡単に識別できるようになります。nginx
コマンドの新しい‑T
フラグは、解析された NGINX 構成を明確で標準化された形式で stdout にダンプします。 これは、アーカイブ目的やサポート チケットを提出するときに役立ちます。proxy_bind
、 proxy_protocol
、 tcp_nodelay
ディレクティブ、およびlisten
ディレクティブのbacklog
パラメータが、HTTP トラフィックだけでなく TCP トラフィック ( streamモジュール) でもサポートされるようになりました。 詳細については、 「NGINX Plus R7 の TCP ロード バランシング」<.htmlspan>を参照してください。Phusion Passenger Open Source をNGINX Plus と併用する場合 ( passenger_root
ディレクティブが構成に含まれている場合)、 NGINX Plus R7 nginx-plus-extrasパッケージにアップグレードすると同時に、Passenger ランタイムをバージョン 5.0.15 にアップグレードする必要があります。 次の手順を実行します (コマンドは Ubuntu に適しています)。
NGINX Plusを停止します。
#サービス nginx を停止
Phusion Passenger ランタイムを 5.0.15 にアップグレードします。
# apt-get install パッセンジャー
NGINX Plus Extras パッケージを R7 にアップグレードします。
# apt-get install nginx-plus-extras
Phusion Passengerアップグレード ノートの説明に従って、NGINX Plus 構成ディレクティブに必要な更新を加えます。
NGINX Plusを起動します。
#サービス nginx を開始
完全なインストールおよびアップグレードの手順は、NGINX Plusカスタマー ポータルで参照できます。
NGINX Plus を実行している場合は、できるだけ早くリリース 7 にアップグレードすることを強くお勧めします。 数多くの修正と改善が行われており、サポート チケットを発行する必要がある場合に、当社がサポートしやすくなります。 インストールおよびアップグレードの手順については、カスタマー ポータルをご覧ください。
NGINX Plus をまだお試しいただいていない方は、Web アクセラレーション、負荷分散、アプリケーション配信、または強化された監視および管理API を備えた完全にサポートされた Web サーバーとして、ぜひお試しください。 今すぐ30 日間の無料評価版を始めて、NGINX Plus がアプリケーションのスケールアウトと配信にどのように役立つかを実際に確認することができます。
listen
ディレクティブのspdy
パラメータを削除する必要があります (HTTP/2 のサポートを有効にするには、 http2
およびssl
パラメータに置き換えます)。 nginx-plus-http2パッケージでは、 listen
ディレクティブにspdy
パラメータが含まれていると、NGINX Plus の起動に失敗します。「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"