У меня есть 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/