ワールドワイドウェブの開始以来 ( www )、 HTTP プロトコルは、インターネットを介して安全で高速なデジタルコンテンツを配信するために、長年にわたって進化してきました。
最も広く使用されているバージョンはHTTP1.1 です また、以前のバージョンの欠点に対処するための機能拡張とパフォーマンスの最適化が含まれていますが、 HTTP / 2によって対処された他のいくつかの顕著な機能には達していません。 。
HTTP / 1.1の制限は何ですか?
HTTP / 1.1 プロトコルには次の欠点があり、特にトラフィックの多いWebサーバーを実行している場合は理想的ではありません。
- HTTPヘッダーが長いため、ウェブページの読み込みが遅れます。
- 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は、ヘッダー圧縮機能のおかげで、よりモバイルフレンドリーであると考えられています。
そうは言っても、 HTTP / 2を有効にします Apache Ubuntu 20.04 LTS およびUbuntu18.04 LTS 。
前提条件:
開始する前に、 HTTPSが有効になっていることを確認してください HTTP / 2を有効にする前にApacheWebサーバーで 。これは、すべての主流のWebブラウザが HTTP / 2をサポートしているためです。 HTTPS 。 Ubuntu 20.04のインスタンスを指すドメイン名があります Let’sEncrypt証明書を使用して保護されたApacheサーバーを実行しています。
また、 Apache 2.4.26を使用することをお勧めします HTTP / 2への移行を予定している本番サーバーの以降のバージョン 。
Apacheのバージョンを確認するには 実行している場合は、次のコマンドを実行します:
$ apache2 -v
UbuntuでApacheのバージョンを確認する
出力から、最新バージョンである Apache 2.4.41を使用していることがわかります。 この記事を書き留める時点で。
Apache仮想ホストでHTTP/2を有効にする
開始するには、まずウェブサーバーが HTTP / 1.1を実行していることを確認します 。 Google Chrome の開発者ツールセクションを開くと、ブラウザでこれを行うことができます Ctrl +SHIFT + I
を使用する 組み合わせ。 「ネットワーク」をクリックします 」タブをクリックして、「プロトコル」を見つけます ’列。
HTTPプロトコルバージョンの確認
次に、 HTTP / 2を有効にします Ubuntuのモジュール 次のコマンドを実行します。
$ sudo a2enmod http2
UbuntuでHTTP/2を有効にする
次に、 SSLを見つけて編集します Let's Encrypt を使用してHTTPSを有効にしている場合は、仮想ホストファイル 、 le-ssl.confを使用して新しいファイルが作成されます 接尾辞。
$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf
<VirtualHost *:443>
の後に以下のディレクティブを挿入します タグ。
Protocols h2 http/1.1
ApacheでHTTP/2を有効にする
変更を保存するには、ApacheWebサーバーを再起動します。
$ sudo systemctl restart apache2
HTTP / 2かどうかを確認するには が有効になっている場合は、次のcurlコマンドをshowとして使用してHTTPヘッダーをフェッチします。
$ curl -I --http2 -s https://domain.com/ | grep HTTP
ApacheでのHTTP/2サポートを確認する
表示された出力が得られるはずです。
HTTP/2 200
ブラウザで、サイトをリロードします。次に、開発者ツールに戻り、h2
で示されるHTTP/2を確認します。 「プロトコル」のラベル ’列。
HTTP/2プロトコルバージョンの確認
Apacheでmod_phpモジュールを使用する場合
Apacheを実行している場合 mod_phpと一緒に モジュールの場合、 PHP-FPMに切り替える必要があります 。これは、 mod_phpが モジュールはプリフォークMPMを使用します HTTP / 2でサポートされていないモジュール 。プリフォークMPMをアンインストールする必要があります mpm_eventに切り替えます HTTP / 2でサポートされるモジュール 。
PHP 7.4 mod_phpを使用している場合 たとえば、モジュールは次のように無効にします。
$ sudo a2dismod php7.4
mod_phpモジュールを無効にする
その後、プリフォーク MPMを無効にします モジュール。
$ sudo a2dismod mpm_prefork
ApacheでPreforkMPMを無効にする
モジュールを無効にした後、次に、イベントMPMを有効にします 、 Fast_CGI 、および setenvif 示されているモジュール。
$ sudo a2enmod mpm_event proxy_fcgi setenvif
ApacheでイベントMPMを有効にする
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ハンドラーとして、変更を有効にするためにApacheWebサーバーを再起動します。
$ sudo a2enconf php7.4-fpm
ApacheUbuntuでHTTP/2サポートを有効にする
次に、前と同じようにHTTP/2モジュールを有効にします。
$ sudo a2enmod http2
Apacheを再起動して、すべての変更を同期します。
$ sudo systemctl restart apache2
最後に、サーバーが HTTP / 2を使用しているかどうかをテストできます 図のようにcurlコマンドを使用するプロトコル。
$ curl -I --http2 -s https://domain.com/ | grep HTTP
ApacheでHTTP/2プロトコルを確認する
Google Chromeのデベロッパーツールを使用することもできます 以前に文書化されているように確認するブラウザ。このガイドの最後までお伝えします。この情報が貴重であり、 HTTP / 2を快適に有効にできることを願っています。 Apache 簡単に。
共有は思いやりがあります…Facebookで共有するTwitterで共有するLinkedinで共有するRedditで共有する