ハイパーテキスト転送プロトコルバージョン2( HTTP / 2 )はHTTPプロトコルの最新バージョンであり、2015年にRFC7540でIETF標準として公開されました。プロトコルの焦点はパフォーマンスにあります。具体的には、エンドユーザーが認識した遅延、ネットワークおよびサーバーのリソース使用量です。主要な目標の1つは、ブラウザーからWebサイトへの単一の接続を使用できるようにすることです。プロトコルには下位互換性があるため、HTTPメソッド、ステータスコード、セマンティクスは以前のバージョンのプロトコルと同じです。 Nginxはバージョン1.9.5以降HTTP/2をサポートしています。このチュートリアルでは、TLS構成がすでに機能しており、選択したLinuxディストリビューションにNginxバージョンがインストールされていること、Let's Encryptの使用方法を知っていること、または発行する方法を知っていることを前提としています。自己署名証明書。
NginxでHTTP/2を有効にするには、次の要件を満たす必要があります。
- Nginxバージョン1.9.5以降。 (
nginx -v
を実行すると、Nginxのバージョンを確認できます。 )コマンド。 - OpenSSLバージョン1.0.2以降。 (OpenSSLバージョン)コマンドを実行すると、OpenSSLのバージョンを確認できます。
- Let'sEncryptのSSL/TLS証明書または自己署名証明書。
- TLS1.2以降のプロトコルが有効になっています。そうしないと、HTTP/2を使用できなくなります。 HTTP / 2の実装では、HTTP / 2overTLSにTLSバージョン1.2以降を使用する必要があります。
NginxでHTTP/2を有効にする
NginxでHTTP/2を有効にするには、http2
を追加する必要があります listen
へのパラメータ 仮想ホストのディレクティブ:
listen 443 ssl http2;
そして、Nginx構成をリロードします:
sudo systemctl reload nginx.service
一部の仮想ホストでHTTP/2を有効にするために使用できる最小限の仮想サーバー構成は次のとおりです。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
root /path/to/public;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2;
}
サーバーがHTTP/2をサポートしているかどうかを確認するには、ブラウザの開発ツールまたはNginxログファイルを使用できます。以下は、https://example.comドメインでHTTP/2が動作していることを示すGoogleChromeブラウザのスクリーンショットです。
Nginx $ http2埋め込み変数を使用して、ネゴシエートされたプロトコルを確認することもできます。この変数はログに記録されます:「h2
」(HTTP / 2 over TLSの場合)、「h2c
」は、クリアテキストTCPを介したHTTP / 2の場合、またはそうするように構成されている場合はNginxアクセスログ内の空の文字列。
NginxサーバーでHTTP/2を有効にする方法はこれですべてです。
- RFC 7540
- HTTP / 2