Назад | Перейти на главную страницу

HTTP / 2 не включен на настроенном веб-сервере Apache 2.4.38

У меня есть Debian 10 (была такая же проблема с Debian 9) с веб-сервером Apache 2.4.38. Модули Apache mpm_event и http2 установлены, и веб-сайты обслуживаются через HTTPS.

Я добавил строку http2 в каждый файл конфигурации виртуального хоста Apache для каждого из моих веб-сайтов, например:

<VirtualHost *:12080>
    # HTTP2
    Protocols h2 h2c http/1.1
    ...

РЕДАКТИРОВАТЬ: Когда я тестировал веб-инструменты онлайн, я получил ответ: «Протокол HTTP / 2 не поддерживается / расширение ALPN не поддерживается».

Когда я скручиваю один из своих сайтов (curl -I -k https://mywebsite.com), У меня есть следующий ответ, очевидно, все еще в HTTP / 1.1:

HTTP/1.1 200 OK
Date: Tue, 30 Jul 2019 03:14:37 GMT
Server: Apache/2.4.38 (Debian)
Set-Cookie: PHPSESSID=7ulo4hj17ukek6s15g99fc2812; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Upgrade: h2,h2c
Connection: Upgrade
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
Set-Cookie: C00=; Expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/

Я что-то забыл иметь HTTP / 2?

На всякий случай вот и содержание моего /etc/apache2/mods-enabled/http2.conf файл:

<IfModule !mpm_prefork>
    Protocols h2 h2c http/1.1
</IfModule>

РЕДАКТИРОВАТЬ: ALPN, похоже, НЕ включен (не знаю, может ли это быть объяснением), а моя версия OpenSSL - 1.1.1c.

Заголовок сервера: Upgrade: h2,h2c показывает, что протокол HTTP / 2 является доступно на стороне сервера ...

Проблема в твоем curl командная строка и тот факт, что http / 2 обычно согласовывается и не всегда используется сразу

Видеть https://curl.haxx.se/docs/http2.html

curl предлагает --http2 параметр командной строки для включения использования HTTP / 2.

curl предлагает --http2-prior-knowledge параметр командной строки, позволяющий использовать HTTP / 2 без обновления HTTP / 1.1.

Убедитесь, что модуль включен на вашем сервере.

#cat /etc/apache2/mods-enabled/http2.load 

Убедитесь, что есть следующая строка:

LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so

# apache2ctl -M | grep http2 - Если этот параметр включен, вывод подобен следующему: http2_module (shared)

Вы включили модуль http2 Apache и перезапустили службу Apache?

sudo a2enmod http2 sudo systemctl restart apache2

ссылка: https://www.howtoforge.com/how-to-enable-http-2-in-apache/