16.04サーバーでHTTP/2を有効にするには、Googleが推奨する このガイド に従いましたが、何らかの理由で私のサイトはまだHTTP/1.1で提供されています。私はすべてが正しいことを確認し、再確認し、サービス(およびサーバー!)を数回再起動しましたが、まったく役に立ちませんでした。
http2
modはApache2で有効になっています。Protocols h2 h2c http/1.1
がサイト構成ファイルに追加されます(Apache.confでテスト済みです)何か不足していますか?
編集:
curl -I -k --http2 https://framework.jacob.rocks/
を実行して、以下を受け取りました...
HTTP/1.1 200 OK
Date: Thu, 20 Jul 2017 17:12:52 GMT
Server: Apache/2.4.27 (Ubuntu)
Upgrade: h2,h2c
Connection: Upgrade
Link: <https://framework.jacob.rocks/wp-json/>; rel="https://api.w.org/"
Link: <https://framework.jacob.rocks/>; rel=shortlink
X-TEC-API-VERSION: v1
X-TEC-API-ROOT: https://framework.jacob.rocks/wp-json/tribe/events/v1/
X-TEC-API-Origin: https://framework.jacob.rocks
Content-Type: text/html; charset=UTF-8
これを理解しました。明らかに、Apache mpm_prefork
から始まるHTTP/2をサポートしていない2.4.27
モジュールの問題でした。 このガイド に従いましたが、現在は機能しています!
Apache2は、ubuntu 16.04ではデフォルトでhttp2サポートを使用してコンパイルされていません。
そのため、次のようにプリコンパイルされたバージョンをインストールする必要があります。
Sudo add-apt-repository ppa:ondrej/Apache2
Sudo apt-get update
Sudo apt-get dist-upgrade
または、次の方法で自分でそれを行う:
/etc/apt/sources.listにこれらの行があることを確認します。
deb-src http://archive.ubuntu.com/ubuntu/ xenial main universe restricted multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main universe restricted multiverse
そうでない場合は、次を使用して追加します。
Sudo echo 'deb-src http://archive.ubuntu.com/ubuntu/ xenial main universe restricted multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main universe restricted multiverse' >> /etc/apt/sources.list
次に、いくつかの必要なパッケージをインストールします(http2をサポートするにはlibnghttp2-devが必要です)。
Sudo apt-get install curl devscripts build-essential libnghttp2-dev
Sudo apt-get build-dep Apache2
Sudo apt-get source Apache2
次にコンパイルします:
cd Apache-2.4.18
Sudo su
./debian/rules binary
この段階で、生成されたdebをインストールできますが、後でセキュリティ更新プログラムによって上書きされる可能性があるため、生成されたモジュールhttp2をコピーし、それを有効にするファイルを作成します。
cp debian/Apache2-bin/usr/lib/Apache2/modules/mod_http2.so /usr/lib/Apache2/modules/
次に、ファイルhttp2.loadを作成してモジュールをロードします。
echo 'LoadModule http2_module /usr/lib/Apache2/modules/mod_http2.so
<IfModule http2_module>
LogLevel http2:info
</IfModule>' > /etc/Apache2/mods-available/http2.load
次に、モジュールを有効にします
a2enmod http2
次に、Apacheを再起動します
service Apache2 restart
これで準備完了です。
サイトでSSLを有効にしている場合は、定義する必要があります
Protocols h2 http/1.1
v-Hostとssl confファイルの両方で、それ以外の場合は機能しません。