アプリケーションデリバリープラットフォームの最新リリースであるNGINX Plus Release 8(R8)の提供開始をお知らせします。このリリースには、本番環境に完全対応し、堅牢性を強化したHTTP/2実装、永続的な動的再構成API、大容量動画ファイルをスケーラブルにキャッシュするための新しい「Slice」モジュールのほか、安定したアプリケーションデリバリーを実現する多くの機能が含まれています。
編集者注 – NGINX Plus R8では、OAuth Technology Previewも導入されました。詳細については、以下をご覧ください。
NGINX Plus R8の主な新機能の詳細については、以下の関連リソースをご覧ください。
- オンデマンドウェビナー:
- ブログ記事:NGINXとNGINX Plusによるスマートで効率的なバイト範囲キャッシュ
NGINX Plus R8の主な新機能は次のとおりです。
- 本番環境に完全対応したHTTP/2実装 – NGINX Plus R7では、HTTP/2のサポートをプロトコルの承認から7か月足らずで導入しました。現在、NGINXはHTTP/2対応Webサーバーで第1位です。そのリリース後も開発を継続し、実装の改善に尽力してきました。NGINX Plus R8では、完全なサポートを備え、本番環境に対応し、堅牢性を高めたHTTP/2標準の実装を提供します。HTTP/2により、Webサイトのパフォーマンスが最大30%向上します。NGINX Plus R8を使用すれば、アプリケーションを変更することなく、新規および既存のサイトに引き続きHTTP/2サポートを追加できます。
- 永続的な動的再構成API – NGINX Plusの動的再構成APIを使用すると、NGINX Plusを再起動したり、構成ファイルを手動で変更して再読み込みしたりすることなく、アップストリームサーバーを追加または削除できます。自動スケーリングやサービスディスカバリに適した機能で、必要に応じてロードバランシングプールを変更できます。NGINX Plus R8以降では、APIで行った変更を再起動後や構成の再読み込み後も維持できます。このAPIの更新により、サーバーの追加や削除、ロードバランシングの優先順位の変更など、NGINX Plusのロードバランシング構成を永続的に変更できます。容易にセキュリティを確保できるこのAPIを使用すれば、必要な頻度で変更を行えます。
- 大容量動画ファイル向けのスケーラブルなキャッシュ – NGINX Plus R8では、HTML5動画などの大容量動画ファイルをより適切に処理できるよう、スケーラブルなコンテンツキャッシュを改善しました。動画ファイル全体を単一のキャッシュエントリとして保存するのではなく、NGINX Plusで小さなフラグメントに分割し、それぞれをキャッシュします。このようなキャッシュ構造により、インターネット上での動画の視聴方法(早送り、途中での視聴終了など)により適合し、ユーザーのレイテンシーとオリジンサーバーとの間のネットワークトラフィックを削減できます。
NGINX Plus R8の機能詳細
このセクションでは、NGINX Plus R8のすべての新機能について詳しく説明します。
OAuthテクノロジープレビュー
編集者注 – NGINX Plus R8では、OAuth 2.0標準を使用した認証の実装であるOAuth Technology Previewを導入し、当初はここに詳細を掲載していました。NGINX Plus R10では、OAuth Technology PreviewをJSON Web Token(JWT)標準のネイティブサポートに置き換えました。
本番環境対応のHTTP/2実装
HTTP/2は、HTTPプロトコルの最新バージョンです。HTTPプロトコルの初期バージョンにあった多くの問題を解消し、全体的なパフォーマンスの向上とリソース利用の効率化を実現します。
2015年2月に標準として承認されて以来、HTTP/2の利用は着実に増加しています。本稿執筆時点では、全Webサイトの6%がHTTP/2を使用しており、インターネットユーザーの69%がHTTP/2対応ブラウザを使用しています。
NGINX Plus R8では、現在利用可能なHTTP/2実装の中でも、実環境で最も徹底的に検証され、安定性と信頼性に優れた実装をご利用いただけます。HTTP/2対応Webサイトの71%がNGINXおよびNGINX Plusを採用しており、早期導入ユーザーからのフィードバックも製品に反映しています。NGINXのHTTP/2実装は本番環境での利用を全面的にサポートし、極めて負荷の高いワークロードにも対応できる拡張性を備えています。
NGINX PlusはHTTP/2ゲートウェイとして機能します
NGINX Plusは「HTTP/2ゲートウェイ」として機能し、新しいプロトコルへの移行を容易にします。フロントエンドでは、HTTP/2をサポートするクライアントWebブラウザーとHTTP/2で通信します。バックエンドでは、従来どおりHTTP/1.x(またはFastCGI、SCGI、uwsgiなど)で通信します。その間で、NGINX PlusがHTTP/2とHTTP/1.x(またはFastCGIなど)の間の変換を行います。そのため、NGINX PlusによってプロキシされるサーバーやアプリケーションはHTTP/2への移行による影響を受けず、クライアントがHTTP/2を使用しているかどうかを認識する必要もほとんどありません。ただし、HTTP/2をサポートするすべてのWebブラウザーで必須とされているため、HTTP/2クライアントにサービスを提供するWebサイトやアプリケーションではTLS/SSLを使用する必要があります。
NGINX PlusまたはNGINXの設定で必要な変更は、http2パラメーターをlistenディレクティブに追加することだけです。
listen 443 ssl http2 default_server;NGINX PlusおよびNGINXにおけるHTTP/2の詳細については、F5の「ホワイトペーパー」および「オンデマンドウェビナー」をご覧ください。
永続的な動的再構成
NGINX Plusは、構成を再読み込みすることなく、バックエンドサーバーを動的に追加、削除、変更できるHTTPベースのAPIを提供します。これは、サービスディスカバリ、自動スケーリング、および必要に応じてサーバーを追加・削除する必要があるその他のアプリケーションに非常に役立つ機能です。
NGINX Plus R8では、このAPIを使用して行った変更を、NGINX Plusの再起動や設定の再読み込み後も保持できるようになりました。新しいstateディレクティブをupstreamブロックに追加し、アップストリームグループ内のサーバーの状態情報をNGINX Plusが保存するファイルを指定します。動的再設定APIで行った変更は、このファイルに記録されます。NGINX Plusは起動時にこのファイルを読み込むため、再起動後も変更が保持されます。
upstream backend {
zone backend 64k;
state /var/lib/nginx/state/backend.state;
}The stateディレクティブでは、アップストリームグループ内のサーバーに関する状態情報をNGINX Plusが保存するファイルを指定します。このディレクティブを設定に含める場合、serverディレクティブを使用してサーバーを静的に定義することはできません。
ユーザー「nginx」には、ディレクトリ「/var/lib/nginx/state/」への書き込み権限が必要です。このディレクトリがまだ存在しない場合は、次のコマンドを実行できます。
$ sudo mkdir -p /var/lib/nginx/state$ sudo chown nginx:nginx /var/lib/nginx/state大容量動画ファイル向けのスケーラブルなキャッシュ
キャッシュは、Webコンテンツの配信を高速化する最も迅速な方法の1つです。コンテンツをエンドユーザーの近くに配置してレイテンシーを短縮できるだけでなく、上流のオリジンサーバーへのリクエスト数も減らせるため、帯域幅の使用量を抑え、実質的に処理容量を増やすことができます。動画、特にHTML5動画は、コンテンツが静的であり、公開直後に多数のリクエストが集中する傾向があるため、キャッシュに特に適しています。
HTML5動画では、ブラウザーがHTTPバイト範囲リクエストを行うことで、コンテンツを疑似ストリーミングします。たとえば、動画の最初の1分間、次の1分間というように順次リクエストします。この方式では、ブラウザーが不要な動画部分をスキップし、ユーザーが早送りまたは巻き戻しした位置から必要なバイト範囲をリクエストできるため、早送り機能や巻き戻し機能も容易に実装できます。
NGINX Plus R8には、キャッシュされた動画ファイルにおけるこのようなブラウザとサーバー間のやり取りをより適切にサポートするため、新しい「Slice」モジュールが搭載されています。このモジュールはファイルを小さな断片に分割し、それらをキャッシュします。このようなキャッシュ構造により、HTML5動画で使用される手法など、最新の動画ストリーミング技術との整合性が向上します。
キャッシュスライシングを有効にするには、sliceディレクティブを追加します:
proxy_cache_path /tmp/mycache keys_zone=mycache:10m;
location / {
proxy_cache mycache;
proxy_pass http://localhost:8000;
slice 1m;
proxy_cache_key $uri$is_args$args$slice_range;
proxy_set_header Range $slice_range;
proxy_http_version 1.1;
proxy_cache_valid 200 206 1h;
}このサンプル構成では、NGINX Plusは動画ファイルを1 MBのフラグメントに分割します。また、次のディレクティブも含める必要があります。
proxy_cache_key。定義したキーに新しい$slice_range変数を指定します。元のファイルの各フラグメントを区別できるように、キャッシュキーを設定します。proxy_set_header– HTTPリクエストのRangeヘッダーを$slice_rangeで上書きします。クライアントが要求したバイト範囲が、NGINX Plusによって作成されたフラグメント間の境界と一致しない場合、NGINX Plusは複数のサブリクエストを実行して、クライアントのバイト範囲リクエストに含まれるすべてのデータを取得する必要があります。proxy_http_version– HTTP/1.0はバイト範囲リクエストをサポートしていないため、リクエストをHTTP/1.1にアップグレードします。
この新機能の詳細については、こちらの「関連ブログ記事」をご覧ください。
その他の機能
NGINX Plus R8では、シームレスなアプリケーション配信を支援するため、以下をはじめとするさまざまな機能強化も導入されています。
- 複雑なアプリケーションに対応する、より柔軟なヘルスチェック。デフォルトでは、NGINX Plusは
serverディレクティブで指定されたポートにヘルスチェックメッセージを送信します。このディレクティブはupstreamブロック内にあります。NGINX Plus R8では、各locationブロックで別のポートを指定できるようになりました。これは、同じホスト上にある多数のサービスの正常性を監視する場合に特に役立ちます。health_checkディレクティブに新しいportパラメーターを追加します:
location / { proxy_pass http://backend;
health_check port=8080;
}- デフォルトでは、NGINX PlusはHTTP
HEADリクエストをキャッシュするようになりました(キャッシュする前にGETリクエストに変換します)。このタイプのキャッシュを無効にするには、proxy_cache_convert_headoffディレクティブを指定します。HEADリクエストは、レスポンス本文が返されない点を除き、標準のGETリクエストと同じです。HEADリクエストは、リンクの有効性、アクセス可能性、最近変更されたかどうかを確認する際に役立ちます。 - 新しい変数「
$realip_remote_addr」は、Real IPモジュールの使用時に元のクライアントIPアドレスを取得します。 - 新しい「
nohostname」パラメーターをaccess_logディレクティブとerror_logディレクティブに指定すると、syslogへのホスト名フィールドの記録が無効になります。ローカルのsyslogサーバーに記録する場合、ホスト名は不要です。
NGINX Plus Extrasパッケージの以下のモジュールが更新されました。
- The Headers-Moreモジュールが0.28に更新されました
- The Luaモジュールが0.9.20に更新されました
- The Phusion Passenger Open Sourceモジュールが5.0.22に更新されました
- The Redisモジュールが0.21に更新されました
以下のパッケージは提供を終了しました:
- nginx-plus-http2 – HTTP/2サポートは現在、nginx-plusおよびnginx-plus-extrasパッケージに統合されています。NGINX PlusはSPDYをサポートしなくなりました。
- nginx-plus-lua – Luaをサポートするには、nginx-plus-extrasパッケージを使用してください。
NGINX Plusへのアップグレードまたはお試し
NGINX Plusをご利用の場合は、できるだけ早くRelease 8へアップグレードすることを強く推奨します。これにより、さまざまな修正や改善が適用されるほか、サポートチケットが必要になった際に、より円滑なサポートを受けられます。インストールおよびアップグレードの手順については、カスタマーポータルをご覧ください。
まだNGINX Plusをお試しでない場合は、Webアクセラレーション、負荷分散、アプリケーションデリバリに加え、強化された監視および管理APIを備え、充実したサポートを受けられるWebサーバーとして、ぜひお試しください。今すぐ無料の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グループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります