Включено http 2, но все еще работает через http 1.1

Чтобы включить HTTP / 2 на моем сервере 16.04, я следил за этим руководством, как рекомендовано Google, но по какой-то причине мой сайт по-прежнему обслуживается через HTTP / 1.1. Я проверил и дважды проверил, что все правильно, несколько раз перезапустил службу (и сервер!), Все безрезультатно.

http2 mod включен в apache2. Protocols h2 h2c http/1.1 добавлен в файл конфигурации моего сайта (и только что протестирован в моем apache.conf) Я перезапустил службу и сервер

Я что-то упустил?

EDIT: [ ! d7]

Просто запустил 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
0
задан 20 July 2017 в 20:15

6 ответов

Поняв это, видимо, это была проблема с модулем mpm_prefork, который не поддерживает HTTP / 2, начиная с Apache 2.4.27. Я последовал этому руководству, и теперь он работает!

2
ответ дан 22 May 2018 в 20:21
  • 1
    У меня такая же проблема, пока я не включил sudo a2enmod mpm_event и отключил sudo a2dismod mpm_prefork – Peshmerge 30 October 2017 в 20:15

Поняв это, видимо, это была проблема с модулем mpm_prefork, который не поддерживает HTTP / 2, начиная с Apache 2.4.27. Я последовал этому руководству, и теперь он работает!

2
ответ дан 18 July 2018 в 09:58

Поняв это, видимо, это была проблема с модулем mpm_prefork, который не поддерживает HTTP / 2, начиная с Apache 2.4.27. Я последовал этому руководству, и теперь он работает!

2
ответ дан 24 July 2018 в 19:29

Apache2 не скомпилирован с поддержкой http2 по умолчанию на ubuntu 16.04.

Таким образом, вам либо нужно установить предварительно скомпилированную версию, например:

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

Если нет, добавьте их с помощью: [ ! d4]

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

Затем установите некоторые необходимые пакеты (libnghttp2-dev необходим для поддержки http2):

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

At на этом этапе вы можете установить сгенерированный deb, но позже они могут быть перезаписаны обновлением безопасности, поэтому мы просто скопируем созданный модуль http2 и создадим файл, который сможет его включить:

[ f6]

Затем создайте файл 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
ответ дан 22 May 2018 в 20:21
  • 1
    Я уже использовал первый метод (добавив репозиторий ppa:ondrej/http2), включил модем и перезапустил apache, поэтому я смущен, почему это не сработает. Я попытаюсь пройти список альтернативных методов и отчитаться. – JacobTheDev 26 July 2017 в 00:19
  • 2
    На шаге, где я запускаю ./debian/rules binary, я получаю следующую ошибку: "debian/rules:69: recipe for target 'binary' failed" – JacobTheDev 26 July 2017 в 00:40

Apache2 не скомпилирован с поддержкой http2 по умолчанию на ubuntu 16.04.

Таким образом, вам либо нужно установить предварительно скомпилированную версию, например:

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

Если нет, добавьте их с помощью: [ ! d4] 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

Затем установите некоторые необходимые пакеты (libnghttp2-dev необходим для поддержки http2):

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

At на этом этапе вы можете установить сгенерированный 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
ответ дан 18 July 2018 в 09:58

Apache2 не скомпилирован с поддержкой http2 по умолчанию на ubuntu 16.04.

Таким образом, вам либо нужно установить предварительно скомпилированную версию, например:

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

Если нет, добавьте их с помощью: [ ! d4] 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

Затем установите некоторые необходимые пакеты (libnghttp2-dev необходим для поддержки http2):

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

At на этом этапе вы можете установить сгенерированный 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
ответ дан 24 July 2018 в 19:29
  • 1
    Я уже использовал первый метод (добавив репозиторий ppa:ondrej/http2), включил модем и перезапустил apache, поэтому я смущен, почему это не сработает. Я попытаюсь пройти список альтернативных методов и отчитаться. – JacobTheDev 26 July 2017 в 00:19
  • 2
    На шаге, где я запускаю ./debian/rules binary, я получаю следующую ошибку: "debian/rules:69: recipe for target 'binary' failed" – JacobTheDev 26 July 2017 в 00:40

Другие вопросы по тегам:

Похожие вопросы: