вот в чем дело Я включил 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
Добро пожаловать! Публиковать ответ вместо того, чтобы говорить, что решено, в вопросе - это неприлично.
Или примите чей-то ответ, если они решили его за вас или, по крайней мере, подтолкнули вас в правильном направлении ...
это нормально?, mpm_prefork и mod_http2 не связаны друг с другом.





Взято из 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 [email protected]
ServerName your-awesome-site.com
...
</VirtualHost>
После внесения изменений не забудьте перезагрузить / перезапустить Apache.
apachectl restart
Кроме того, при следующей возможности я бы порекомендовал выполнить обновление до Debian 9.
Но, конечно, если mod_http2 не был включен, тогда конфигурация H2Direct и H2EarlyHints, включенная в OP, должна была показывать ошибку как нераспознанные директивы?
Должно. Вы также можете использовать "chrome: // net-internals / # http2", когда у вас есть сайт, который вы хотите проверить, открыт в отдельной вкладке. Если http2 работает, сайт будет там указан.
Согласовано, но вывод Curl ясно показывает, что его запрашивают, но не используют. Но заголовок обновления есть. Итак, mod_http2 включен. Так что это наполовину работает. Я подозреваю, что дело в рабочем MPM.
Если вы используете mod_prefork, Apache покажет ошибку в журналах при перезапуске.
Можете ли вы добавить в свой основной файл конфигурации apache следующее:
<IfModule http2_module>
#Enable HTTP/2 support
Protocols h2 http/1.1
LogLevel http2:info
</IfModule>
Затем перезапустите. Затем проверьте начало журнала ошибок, чтобы узнать, не написано ли в нем что-нибудь.
Также стоит запустить httpd -V (или apachectl -V), чтобы посмотреть, для чего настроена среда.
Извините, но «Включить поддержку HTTP / 2» дает неверную команду «Включить», в любом случае это уже был мой файл http2.conf Версия сервера: Apache / 2.4.34 (Debian) Сервер построен: 2018-07-27T19: 37: 37
Извините, что нужно было закомментировать. Меня больше интересовало добавление LogLevel, а затем просмотр вывода, который помещается в журнал ошибок после перезапуска.
Благодаря комментарию Барри Полларда - по поводу рабочего MPM я понял, что на моем сервере запущен MPM_prefork, при последнем поиске в Google я понял, что моя установка не была завершена ... поэтому я установил и настроил php7.2-fpm, отключил modphp, отключил mpm_prefork, затем включил mpm_worker, и он сразу заработал + каким-то образом обеспечил поддержку получения правильных заголовков в режиме https для запуска 304 ответов
Что ж, проблема была определенно mpm_prefork. Я установил php7.2-fpm вместе с mpm_worker, и появляется http2 alpn (а также необходимые заголовки для возврата правильных ответов 304) :) Это сделало мой день;)