Drupal 7, apache2 - попытка перейти на HTTP/2. В чем моя ошибка?

Главные вкладки

Аватар пользователя drup-user drup-user 25 ноября 2018 в 12:30

Здравствуйте. Есть ресурс на vps:

  • Drupal 7.61
  • debian 8
  • https (let's encrypt) сертификат A
  • apache 2.4.37

Решил перейти на http/2:
Сервер Апач. Обновил до 2.4.37.
включил модуль http2

a2enmod http2

Перезагрузил

apachectl -t && systemctl restart apache2

Добавил конфиг

bash -c 'cat >/etc/apache2/conf-available/http2.conf' <<EOF
Protocols h2 h2c http/1.1

H2Push          on
H2PushPriority  *                       after
H2PushPriority  text/css                before
H2PushPriority  image/jpeg              after   32
H2PushPriority  image/png               after   32
H2PushPriority  application/javascript  interleaved

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS'

EOF

Перезагрузил апач. Но протокол по прежнему http/1.1
Кэш чистил

Так же пробовал добавлять в virtualhost

Protocols h2 h2c http/1.1

Мод включен (apache2ctl -M показывает http2.load)
Вопрос: что я забыл? Почему не работает?

Спасибо.

Комментарии

Аватар пользователя drup-user drup-user 25 ноября 2018 в 18:18

Друзья, моя самооценка немного растет. Я сам решил проблему. Если кто будет искать:
«стандартный» модуль Апач "prefork" не очень совместим с HTTP/2, поэтому Вам нужно использовать более подходящий. Выключаем один, включаем другой, перезагружаем Apache.

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
service apache2 restart

Это помогло мне, наконец, запустить h2 протокол с использованием letsencrypt

Аватар пользователя bsyomov bsyomov 26 ноября 2018 в 10:37

Если вы используете php в режиме fastcgi, то зачем вам вообще apache? С mpm_event, он в принципе не так уж плох, но всё-же и так он тяжелее того же nginx, который прилично работает и с http2.

Ну и в целом, не всё так просто как описано выше, т.к. у большинства с apache mpm_prefork, будет в комплекте mod_php, и он не будет нормально работать с mpm_event.