web-dev-qa-db-ja.com

http2を有効にしましたが、まだhttp1.1で提供しています

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
1
JacobTheDev

これを理解しました。明らかに、Apache mpm_preforkから始まるHTTP/2をサポートしていない2.4.27モジュールの問題でした。 このガイド に従いましたが、現在は機能しています!

3
JacobTheDev

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

これで準備完了です。

1
jmary

サイトでSSLを有効にしている場合は、定義する必要があります

Protocols h2 http/1.1

v-Hostとssl confファイルの両方で、それ以外の場合は機能しません。

0
S K R