ハイパーテキスト転送プロトコルバージョン2( HTTP / 2 )はHTTPプロトコルの最新バージョンであり、2015年にRFC7540でIETF標準として公開されています。プロトコルの焦点はパフォーマンスにあります。具体的には、エンドユーザーが認識した遅延、ネットワーク、およびサーバーリソースの使用量です。主要な目標の1つは、ブラウザーからWebサイトへの単一の接続を使用できるようにすることです。プロトコルには下位互換性があるため、HTTPメソッド、ステータスコード、およびセマンティクスは、以前のバージョンのプロトコルと同じです。 Apacheはバージョン2.4.17以降HTTP/2をサポートしています。このチュートリアルでは、TLS構成がすでに機能しており、選択したLinuxディストリビューションに必要なApacheバージョンがインストールされており、Let's Encryptの使用方法を知っている、または自己署名証明書を発行します。
このチュートリアルは Debian10でテストされています 、Debian 9、 Ubuntu 20.04 LTS、 およびUbuntu18.04LTS。
ApacheでHTTP/2を有効にするには、次の要件を満たす必要があります。
- まず、サーバーでHTTPSを有効にする必要があります。すべての主要なブラウザは、HTTPS上でのみHTTP/2の使用を許可します。また、TLS プロトコルバージョン>=1.2と最新の暗号スイートが必要です。
- 次に、Apacheを実行していることを確認します 2.4.17 このバージョン以降ではHTTP/2がサポートされているためです。
- また、クライアント/ブラウザが実際にHTTP/2をサポートしていることを確認してください。
mod_phpモジュールを無効にします
次のステップでApacheMPMモジュールをmpm_eventに切り替える前に、古いmod_phpモードを無効にして、より新しいPHP-FPMモードに置き換える必要があります。コマンドはオペレーティングシステムのバージョンごとに異なります。インストールされているシステムに一致するものを使用してください。
Ubuntu 20.04 LTS
sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi
Debian 10
sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi
Ubuntu 18.04 LTS
sudo apt-get install php7.2-fpm
sudo a2dismod php7.2
sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi
Debian 9
sudo apt-get install php7.0-fpm
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm
sudo a2enmod proxy_fcgi
HTTP/2と互換性のあるApacheMPMを有効にする
デフォルトでは、ApacheはプリフォークMPMを使用します。このMPMはHTTP/2と互換性がないため、より新しいmpm_eventモジュールに置き換える必要があります。
まず、mpm_preforkモジュールを無効にします:
sudo a2dismod mpm_prefork
次に、mpm_eventモジュールを有効にします。
sudo a2enmod mpm_event
ApacheでHTTP/2サポートを有効にする
ApacheでHTTP/2を機能させるには、SSLおよびHTTP/2モジュールを有効にしてロードする必要があります。これを行うには、ターミナルで次のコマンドを実行します。
sudo a2enmod ssl
そして
sudo a2enmod http2
これらの新しいモジュールをアクティブ化するには、以下を実行する必要があります:
sudo systemctl restart apache2
必要なApacheモジュールを有効にしてロードした後、Apache構成ディレクトリに移動し、Apache構成を編集します。
ApacheWebサーバーでHTTP/2を有効にするには、グローバルApache構成または特定の仮想ホスト内に次のいずれかを追加します。
Protocols h2 http/1.1
一部の仮想ホストでHTTP/2を有効にするために使用できる最小限の仮想サーバー構成は次のとおりです。
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/public_html/example.com
SSLEngine on
SSLCertificateKeyFile /path/to/private.pem
SSLCertificateFile /path/to/cert.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Protocols h2 http/1.1
</VirtualHost>
サーバーがHTTP/2をサポートしているかどうかを確認するには、ブラウザの開発ツールを使用できます。以下は、 https://example.comでHTTP/2が動作していることを示すGoogleChromeおよびAppleSafariブラウザのスクリーンショットです。 ドメイン。
Chrome
サファリ
- RFC 7540
- HTTP / 2