Включить 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

Что ж, проблема была определенно mpm_prefork. Я установил php7.2-fpm вместе с mpm_worker, и появляется http2 alpn (а также необходимые заголовки для возврата правильных ответов 304) :) Это сделало мой день;)

Jack 19.10.2018 17:08

Добро пожаловать! Публиковать ответ вместо того, чтобы говорить, что решено, в вопросе - это неприлично.

GAD3R 19.10.2018 21:40

Или примите чей-то ответ, если они решили его за вас или, по крайней мере, подтолкнули вас в правильном направлении ...

Barry Pollard 20.10.2018 10:48

это нормально?, mpm_prefork и mod_http2 не связаны друг с другом.

Jack 21.10.2018 09:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
1 796
3

Ответы 3

Взято из 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, должна была показывать ошибку как нераспознанные директивы?

Barry Pollard 19.10.2018 10:39

Должно. Вы также можете использовать "chrome: // net-internals / # http2", когда у вас есть сайт, который вы хотите проверить, открыт в отдельной вкладке. Если http2 работает, сайт будет там указан.

cecil merrel aka bringrainfire 19.10.2018 11:47

Согласовано, но вывод Curl ясно показывает, что его запрашивают, но не используют. Но заголовок обновления есть. Итак, mod_http2 включен. Так что это наполовину работает. Я подозреваю, что дело в рабочем MPM.

Barry Pollard 19.10.2018 13:00

Если вы используете 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

Jack 19.10.2018 14:02

Извините, что нужно было закомментировать. Меня больше интересовало добавление LogLevel, а затем просмотр вывода, который помещается в журнал ошибок после перезапуска.

Barry Pollard 19.10.2018 15:10

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

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