Включить http2 с apache2 в Debian 8

Вот что я включил mod_http2 ( apachectl -M показывает: http2_module) и установил это в этом vhost

<VirtualHost *:443>
  ServerName s74.fr
  Protocols h2 h2c http/1.1
  H2Direct on
  H2EarlyHints on

Дело в том, когда я запускаю эту команду curl: я вижу, что ALPN предлагает h2 наверху

Но при использовании браузера или простого валидатора веб-сайта HTTP2 вообще никогда не используется..

Ребята, у вас есть какие-либо подсказки по этой теме?

Любые замечания, заметки, подсказки, просвещение будет принята с благодарностью;)

curl -v --http2 https://s74.fr

* Connected to s74.fr (91.121.146.195) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: C:\prog\ca-bundle.crt
  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
} [5 bytes data] ...

* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ***ALPN, server accepted to use http/1.1***
* Server certificate:
*  subject: CN=s74.fr
*  start date: Oct 10 08:02:34 2018 GMT
*  expire date: Jan  8 08:02:34 2019 GMT
*  subjectAltName: host "s74.fr" matched cert's "s74.fr"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
} [5 bytes data]
> GET / HTTP/1.1
> Host: s74.fr
> User-Agent: curl/7.53.1
> Accept: */*
>
{ [5 bytes data]
< HTTP/1.1 200 OK
< Date: Fri, 19 Oct 2018 06:32:01 GMT
< Server: Apache/2.4.34 (Debian)
< Upgrade: h2,h2c
< Connection: Upgrade
< Etag: 1539924168
< Last-Modified: Fri, 19 Oct 2018 04:42:48 GMT
< Cache-Control: private
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=utf-8

3 ответа

Если вы используете mod_prefork, Apache покажет ошибку в журналах при перезапуске.

Можете ли вы добавить следующее в ваш основной конфигурационный файл apache:

<IfModule http2_module>
    #Enable HTTP/2 support
    Protocols h2 http/1.1
    LogLevel http2:info
</IfModule>

Затем перезагрузите. Затем обеспечьте проверку начала журнала ошибок, чтобы увидеть, говорит ли он что-нибудь.

Также стоит побежать httpd -V (или же apachectl -V) чтобы увидеть, для чего настроена среда.

Благодаря комментарию Барри Полларда - на рабочем MPM я понял, что на моем сервере запущен MPM_prefork, последнее приближение, я понял, что моя установка не была завершена.. поэтому я установил и настроил php7.2-fpm, отключил modphp, отключил mpm_prefork, затем включил mpm_worker и он сразу заработал + каким-то образом предоставил поддержку для получения правильных заголовков в режиме https для запуска 304 ответов

Взято из https://http2.pro/doc/Apache

Веб-сервер Ubuntu / Debain Apache, распространяемый в стандартных программных репозиториях Ubuntu и Debian, не содержит mod_http2, необходимый для включения функциональности HTTP/2. Вам нужно будет добавить сторонний исходный код пакета с последней версией Apache, которая также включает mod_http2.

apt-get install software-properties-common python-software-properties
add-apt-repository ppa:ondrej/apache2
apt-get update

Это установит некоторые утилиты (если они еще не установлены), которые помогут нам добавить внешние PPA. Во-вторых, мы добавляем PPA-компонент ondrej / apache2, который содержит последние сборки Apache2. В-третьих, мы обновляем информацию о вашей системе.

apt-get install apache2
apachectl -v

Это обновление существующей версии Apache2 до последней версии. После обновления команда apachectl -v покажет вашу обновленную версию Apache. Это будет 2.4.29 или позже.

Добавить поддержку HTTP/2

Мы настоятельно рекомендуем сначала включить поддержку HTTPS для вашего веб-сайта. Большинство веб-браузеров просто не поддерживают HTTP/2 поверх простого текста. Кроме того, нет никаких оправданий, чтобы больше не использовать HTTPS. HTTP/2 может быть включен по сайтам. Найдите файл конфигурации виртуального хоста Apache и сразу после открывающего тега добавьте следующее: Протоколы h2 http/1.1

В целом, ваш файл конфигурации должен выглядеть примерно так:

<VirtualHost *:443>
  Protocols h2 http/1.1
  ServerAdmin you@your-awesome-site.com
  ServerName your-awesome-site.com
  ...
</VirtualHost>

После внесения изменений не забудьте перезагрузить / перезапустить Apache.

apachectl restart

Кроме того, при следующей возможности я бы порекомендовал обновиться до Debian 9.

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