ウェブサイト検索

Nginx で HTTP2.0 を有効にする方法?


HTTP/2 は HTTP プロトコルの最新バージョンで、Web サイトのパフォーマンスとセキュリティを向上させるように設計されています。 Nginx は、HTTP/2 をサポートする一般的な Web サーバーです。 Nginx を使用していて、Web サイトで HTTP/2 を有効にしたい場合は、この記事でそのプロセスを説明します。

ステップ 1: Nginx のバージョンを確認する

HTTP/2 を有効にする前に、システムにインストールされている Nginx のバージョンを確認する必要があります。これを行うには、次のコマンドを実行します-

nginx -v

このコマンドは、システムにインストールされている Nginx のバージョンを表示します。 Nginx のバージョンが 1.9.5 以降の場合は、HTTP/2 を有効にすることができます。 Nginx のバージョンが 1.9.5 より古い場合は、新しいバージョンにアップグレードする必要があります。

ステップ 2: SSL/TLS を有効にする

HTTP/2 を有効にするには、まず Web サイトで SSL/TLS を有効にする必要があります。 HTTP/2 では、Web サーバーとクライアントのブラウザーの間に安全な接続を提供する SSL/TLS 暗号化の使用が必要です。

SSL/TLS を有効にするには、SSL/TLS 証明書が必要です。信頼できる認証局 (CA) から証明書を取得することも、テスト目的で自己署名証明書を作成することもできます。

SSL/TLS証明書があると仮定して、次の行をNginx構成ファイルに追加できます-

server {
   listen 443 ssl http2;
   server_name example.com;
   ssl_certificate /path/to/ssl/certificate;
   ssl_certificate_key /path/to/ssl/private/key;
   ...
}

この構成は、SSL/TLS と HTTP/2 を使用してポート 443 (デフォルトの HTTPS ポート) をリッスンするように Nginx に指示します。 ssl_certificate ディレクティブと ssl_certificate_key ディレクティブは、それぞれ SSL/TLS 証明書と秘密キーへのパスを指定します。 example.com を実際のドメイン名に置き換えます。

ステップ 3: 構成をテストして Nginx を再起動する

Nginx 構成ファイルを更新したら、構成をテストしてエラーがないことを確認する必要があります。これを行うには、次のコマンドを実行します-

nginx -t

構成が有効な場合は、構文に問題がなく、テストが成功したことを示すメッセージが表示されます。

最後に、Nginxを再起動して変更を適用します-

sudo service nginx restart

ステップ 4: HTTP/2 が有効になっていることを確認する

Web サイトで HTTP/2 が有効になっていることを確認するには、Google Chrome DevTools などのブラウザ開発者ツールを使用できます。 DevTools を開いて [ネットワーク] タブに移動し、Web サイトからページを読み込みます。 [プロトコル] 列には、「http/1.1」ではなく「h2」が表示され、ページが HTTP/2 を使用してロードされていることを示します。

上記で概説した手順に加えて、Nginx で HTTP/2 を有効にするときに留意すべき点がいくつかあります-

すべてのサーバー ブロックで HTTP/2 を有効にする

Nginx 構成ファイルに複数のサーバー ブロックがある場合は、Web サイト全体が HTTP/2 のパフォーマンス向上の恩恵を受けるように、すべてのサーバー ブロックで HTTP/2 を有効にする必要があります。これを行うには、各サーバー ブロックの listen ディレクティブに http2 パラメーターを追加するだけです。

Web サイトを HTTP/2 用に最適化する

HTTP/2 は HTTP/1 に比べてパフォーマンス上の多くの利点を提供しますが、すべての Web サイトで同じ改善が見られるわけではないことに注意することが重要です。 HTTP/2 を最大限に活用するには、次の方法で新しいプロトコルに合わせて Web サイトを最適化する必要があります-

  • ページのロードに必要なリクエストの数を最小限に抑える

  • 画像、CSS、JavaScript ファイルなどのリソースのサイズを削減する

  • サーバープッシュを使用して後続のページに必要なリソースをプリロードする

  • すべてのリソースに対して gzip 圧縮を有効にする

  • コンテンツ配信ネットワーク (CDN) を使用して静的リソースをキャッシュし、提供する

  • ウェブサイトのパフォーマンスを監視する

HTTP/2 を有効にした後、Web サイトのパフォーマンスを監視して、実際に新しいプロトコルの恩恵を受けているかどうかを確認することが重要です。 Google PageSpeed Insights、WebPageTest、Pingdom などのツールを使用して、Web サイトの読み込み速度を測定し、改善の余地がある領域を特定できます。

サードパーティの HTTP/2 アクセラレーション サービスの使用を検討してください。

共有ホスティング環境を使用している場合、またはサーバー構成を制御できない場合は、Cloudflare や Akamai などのサードパーティの HTTP/2 アクセラレーション サービスの使用を検討できます。これらのサービスは、リソースの最適化、遅延の削減、追加のセキュリティ機能の提供により、Web サイトのパフォーマンスを加速します。

最新バージョンの OpenSSL を使用する

Nginx は、SSL/TLS 暗号化と HTTP/2 サポートのために OpenSSL に依存しています。最高のパフォーマンスとセキュリティを得るには、最新バージョンの OpenSSL を使用していることを確認してください。次のコマンドを実行して、OpenSSLのバージョンを確認できます-

openssl version

OpenSSL のバージョンが古い場合は、パッケージ マネージャーを使用するか、ソースからコンパイルすることでアップグレードできます。

HTTP/2 サーバープッシュ機能を使用する

HTTP/2 には、サーバー プッシュと呼ばれる新機能が含まれており、クライアントが追加のリソースを要求する前に、サーバーがクライアントに追加のリソースを送信できるようになります。これにより、ページの読み込みに必要な往復回数が大幅に削減され、パフォーマンスが向上します。 Nginx でサーバー プッシュを有効にするには、http2_push ディレクティブを使用できます。たとえば、URL /styles.css の CSS ファイルをプッシュするには、Nginx 構成ファイルに次の行を追加できます-

http2_push /styles.css;

サーバーのリソース使用状況を監視する

HTTP/2 を有効にすると、特にトラフィックの多い Web サイトを使用している場合、サーバーのリソース使用量が増加する可能性があります。サーバーの CPU、メモリ、ネットワークの使用状況を必ず監視して、増加した負荷に対処できることを確認してください。 top、htop、sar などのツールを使用して、サーバーのリソース使用状況を監視できます。

静的コンテンツのみに対して HTTP/2 を有効にする

PHP スクリプトやデータベース クエリなどの動的コンテンツに対して HTTP/2 を有効にしても、パフォーマンスが大幅に向上しない可能性があります。 HTTP/2 のパフォーマンス上の利点を最大化するには、画像、CSS、JavaScript ファイルなどの静的コンテンツに対してのみ HTTP/2 を有効にする必要があります。 Nginx 構成ファイルで Map ディレクティブを使用すると、リクエスト URL に基づいて HTTP/2 を選択的に有効にすることができます。たとえば、.css ファイル拡張子を持つリクエストに対して HTTP/2 を有効にするには、構成ファイルに次の行を追加できます-

map $request_uri $http2_enabled {
   ~*\.css$ 1;
   default 0;
}

server {
   listen 443 ssl http2;
   ...
   if ($http2_enabled) {
      http2_push /styles.css;
   }
   ...
}

Nginx で HTTP/2 を有効にすると、Web サイトのパフォーマンスが大幅に向上します。ただし、新しいプロトコルに合わせて Web サイトを最適化し、サーバーのリソース使用状況を監視し、静的コンテンツのみに対して HTTP/2 を選択的に有効にすることが重要です。これらのヒントに従うことで、Web サイトの訪問者に高速で安全なユーザー エクスペリエンスを確実に提供できます。

サポートされているすべてのブラウザで HTTP/2 を有効にする

HTTP/2 はほとんどの最新の Web ブラウザでサポートされていますが、一部の古いブラウザでは新しいプロトコルがサポートされていません。すべての訪問者が Web サイトにアクセスできるようにするには、HTTP/2 をサポートするブラウザに対してのみ HTTP/2 を有効にする必要があります。 Nginx 構成ファイルで if ディレクティブを使用すると、クライアントのブラウザを検出し、サポートされている場合にのみ HTTP/2 を有効にすることができます。たとえば、Google ChromeとMozilla Firefoxに対してのみHTTP/2を有効にするには、構成ファイルに次の行を追加できます-

map $http_user_agent $http2_enabled {
   default 0;
   ~*Chrome|Firefox 1;
}

server {
   listen 443 ssl;
   if ($http2_enabled) {
      listen 443 ssl http2;
   }
   ...
}

サーバー側のキャッシュを有効にする

HTTP/2 では、ページの読み込みに必要なリクエストの数を大幅に減らすことができますが、キャッシュの必要性がなくなるわけではありません。サーバー側のキャッシュを有効にすると、サーバーの負荷が軽減され、パフォーマンスがさらに向上します。 Nginx 構成ファイルで proxy_cache ディレクティブを使用して、動的コンテンツのキャッシュを有効にすることができます。たとえば、.php ファイル拡張子を持つリクエストのキャッシュを有効にするには、構成ファイルに次の行を追加できます-

server {
   ...
   location ~ \.php$ {
      proxy_cache_valid 200 5m;
      ...
   }
   ...
}

結論

Nginx で HTTP/2 を有効にするのは簡単なプロセスです。 Nginx のバージョンを確認し、SSL/TLS を有効にし、Nginx 構成ファイルを更新し、構成をテストして、Nginx を再起動する必要があります。 HTTP/2 を有効にすると、Web サイトはページの読み込み時間が短縮され、パフォーマンスが向上し、セキュリティが強化されるという利点があります。

関連記事: