Ubuntu 上の Apache で HTTP/2 を有効にする方法
ワールド ワイド ウェブ (www) の開始以来、HTTP プロトコルは、安全かつ高速なデジタル コンテンツを世界中に配信するために長年にわたって進化してきました。インターネット。
最も広く使用されているバージョンはHTTP 1.1 で、以前のバージョンの欠点に対処するための機能強化とパフォーマンスの最適化が詰め込まれていますが、HTTP 1.1 で対処されている他のいくつかの顕著な機能には及んでいません。 >HTTP/2です。
HTTP/1.1 の制限は何ですか?
HTTP/1.1 プロトコルには次のような欠点があり、特にトラフィックの多い Web サーバーを実行する場合には理想的ではありません。
- HTTP ヘッダーが長いため、Web ページの読み込みに遅延が発生します。
- HTTP/1.1 は、TCP 接続ごとにファイルごとに 1 つのリクエストしか送信できません。
- HTTP/1.1 が TCP 接続ごとに 1 つのリクエストを処理するとすると、ブラウザはリクエストを同時に処理するために大量の並列 TCP 接続を送信する必要があります。これは TCP の輻輳につながり、最終的には帯域幅の浪費とネットワークの低下につながります。
前述の問題は、多くの場合、パフォーマンスの低下や帯域幅使用量のオーバーヘッド コストの増加につながりました。これらの問題に対処するために登場したのが HTTP/2 であり、HTTP プロトコルの未来となっています。
HTTP/2 を使用する利点
これには次のような利点があります。
- ヘッダー圧縮によりクライアント要求が最小限に抑えられ、帯域幅の消費が削減されます。その結果、ページの読み込み速度が速くなります。
- 1 つの TCP 接続上で複数のリクエストを多重化します。サーバーとクライアントはどちらも HTTP リクエストを複数のフレームに分割し、相手側でそれらを再グループ化できます。
- Web パフォーマンスの高速化により、SEO ランキングの向上につながります。
- ほとんどの主流ブラウザは HTTPS 経由で HTTP/2 をロードするため、セキュリティが向上しました。
- HTTP/2 は、ヘッダー圧縮機能のおかげで、よりモバイルに適していると考えられています。
つまり、Ubuntu 20.04 LTS および Ubuntu 18.04 LTS の Apache で HTTP/2 を有効にする予定です。
前提条件:
開始する前に、HTTP/2 を有効にする前に、Apache ウェブサーバーで HTTPS を有効にしてください。これは、すべての主流 Web ブラウザがHTTPS 経由のHTTP/2 をサポートしているためです。 Let’s Encrypt 証明書を使用して保護された Apache サーバーを実行している Ubuntu 20.04 上のインスタンスを指すドメイン名があります。
また、HTTP/2 への移行を予定している運用サーバーには、Apache 2.4.26 以降のバージョンを使用することをお勧めします。
実行しているApache のバージョンを確認するには、次のコマンドを実行します。
apache2 -v
出力から、この記事の執筆時点では最新バージョンであるApache 2.4.41 を使用していることがわかります。
Apache 仮想ホストで HTTP/2 を有効にする
開始するには、まずウェブサーバーがHTTP/1.1 を実行していることを確認します。これをブラウザで行うには、Ctrl + SHIFT + I
の組み合わせを使用して Google chrome の開発者ツール セクションを開きます。 [ネットワーク] タブをクリックし、[プロトコル] 列を見つけます。
次に、次のコマンドを実行して、Ubuntu で HTTP/2 モジュールを有効にします。
sudo a2enmod http2
次に、SSL 仮想ホスト ファイルを見つけて編集します。Let's Encrypt を使用して HTTPS を有効にしている場合は、le-ssl.conf を使用して新しいファイルが作成されます。接尾語です。
sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf
以下のディレクティブを
タグの後に挿入します。
Protocols h2 http/1.1
変更を保存するには、Apache Webサーバーを再起動します。
sudo systemctl restart apache2
HTTP/2 が有効かどうかを確認するには、show として次のcurl コマンドを使用して HTTP ヘッダーをフェッチします。
curl -I --http2 -s https://domain.com/ | grep HTTP
表示される出力が得られるはずです。
HTTP/2 200
ブラウザでサイトをリロードします。次に、開発者ツールに戻り、「プロトコル」列の h2
ラベルで示される HTTP/2 を確認します。
Apacheでmod_phpモジュールを使用する場合
Apache を mod_php モジュールと一緒に実行している場合は、PHP-FPM に切り替える必要があります。これは、mod_php モジュールが、HTTP/2 でサポートされていないプリフォークのMPM モジュールを使用しているためです。プリフォークのMPM をアンインストールし、HTTP/2 でサポートされる mpm_event モジュールに切り替える必要があります。
たとえば、PHP 7.4 mod_php モジュールを使用している場合は、次のように無効にします。
sudo a2dismod php7.4
その後、プリフォークのMPM モジュールを無効にします。
sudo a2dismod mpm_prefork
モジュールを無効にした後、次に示すようにEvent MPM、Fast_CGI、および setenvif モジュールを有効にします。
sudo a2enmod mpm_event proxy_fcgi setenvif
Ubuntu に PHP-FPM をインストールする
次に、 図のようにPHP-FPM をインストールして起動します。
sudo apt install php7.4-fpm
sudo systemctl start php7.4-fpm
次に、PHP-FPM が起動時に開始されるようにします。
sudo systemctl enable php7.4-fpm
次に、PHP-FPM を Apache の PHP ハンドラーとして有効にし、変更を有効にするために Apache Web サーバーを再起動します。
sudo a2enconf php7.4-fpm
Apache Ubuntu で HTTP/2 サポートを有効にする
次に、以前と同様に HTTP/2 モジュールを有効にします。
sudo a2enmod http2
Apache を再起動して、すべての変更を同期します。
sudo systemctl restart apache2
最後に、示されているように、curl コマンドを使用して、サーバーがHTTP/2 プロトコルを使用しているかどうかをテストできます。
curl -I --http2 -s https://domain.com/ | grep HTTP
前述のように、Google Chrome ブラウザの開発者ツールを使用して検証することもできます。このガイドは最後までお読みください。この情報が価値あるものであると感じていただき、Apache で HTTP/2 を簡単に快適に有効にできることを願っています。