Поиск по сайту:

Как включить HTTP/2 на веб-сервере Apache в Ubuntu и Debian


На этой странице

  1. Предпосылки
  2. Отключить модуль mod_php
  3. Включите Apache MPM, совместимый с HTTP/2.
  4. Включить поддержку HTTP/2 в Apache.
  5. Ссылки

Протокол передачи гипертекста версии 2 (HTTP/2) — это последняя версия протокола HTTP, опубликованная в качестве стандарта IETF в RFC 7540 в 2015 году. Основное внимание в протоколе уделяется производительности; в частности, воспринимаемая конечным пользователем задержка, использование сети и ресурсов сервера. Одна из основных целей состоит в том, чтобы разрешить использование одного подключения браузеров к веб-сайту. Протокол имеет обратную совместимость, поэтому методы HTTP, коды состояния и семантика такие же, как и в предыдущих версиях протокола. Apache поддерживает HTTP/2, начиная с версии 2.4.17. В этом руководстве я предполагаю, что у вас уже есть работающая конфигурация TLS, и что у вас установлена необходимая версия Apache в выбранном вами дистрибутиве Linux, и что вы знаете, как использовать Lets Encrypt, или знаете, как создать самоподписанный сертификат.

Это руководство было протестировано на Debian 11, Debian 10, Debian 9, Ubuntu 22.04 LTS, Ubuntu 20.04 LTS и Ubuntu 18.04 LTS.

Предпосылки

Чтобы включить HTTP/2 в Apache, вам необходимо выполнить следующие требования:

  • Во-первых, вам нужно включить HTTPS на вашем сервере. Все основные браузеры позволяют использовать HTTP/2 только через HTTPS. Кроме того, требуется версия протокола TLS >= 1.2 с современными наборами шифров.
  • Затем убедитесь, что вы используете Apache 2.4.17 или выше, так как HTTP/2 поддерживается начиная с этой версии и выше.
  • Кроме того, убедитесь, что ваш клиент/браузер действительно поддерживает HTTP/2.

Отключить модуль mod_php

Прежде чем мы сможем переключить модуль Apache MPM на следующем шаге на mpm_event, нам придется отключить старый режим mod_php и заменить его более современным режимом PHP-FPM. Команды различаются для каждой версии операционной системы, используйте те, которые соответствуют вашей установленной системе.

Убунту 22.04 ЛТС

sudo apt-get install php8.1-fpm
sudo a2dismod php8.1
sudo a2enconf php8.1-fpm
sudo a2enmod proxy_fcgi

Дебиан 11

sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi

Убунту 20.04 ЛТС

sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi

Дебиан 10

sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi

Убунту 18.04 ЛТС

sudo apt-get install php7.2-fpm
sudo a2dismod php7.2
sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi

Дебиан 9

sudo apt-get install php7.0-fpm
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm
sudo a2enmod proxy_fcgi

Включите Apache MPM, совместимый с HTTP/2.

По умолчанию Apache будет использовать prefork MPM. Этот MPM не совместим с HTTP/2, поэтому нам придется заменить его более современным модулем mpm_event.

Во-первых, отключаем модуль mpm_prefork:

sudo a2dismod mpm_prefork

Затем мы включаем модуль mpm_event:

sudo a2enmod mpm_event

Включить поддержку HTTP/2 в Apache

Чтобы HTTP/2 работал на Apache, вам необходимо включить и загрузить модули SSL и HTTP/2. Для этого вы можете запустить в своем терминале следующее:

sudo a2enmod ssl

а потом

sudo a2enmod http2

Чтобы активировать эти новые модули, вам нужно запустить:

sudo systemctl restart apache2

После включения и загрузки необходимых модулей Apache перейдите в каталог конфигурации Apache и отредактируйте конфигурацию Apache.

Чтобы включить HTTP/2 на веб-сервере Apache, добавьте один из следующих элементов в глобальную конфигурацию Apache или внутри определенного виртуального хоста.

Protocols h2 http/1.1

Вот минимальная конфигурация виртуального сервера, которую можно использовать для включения HTTP/2 на каком-либо виртуальном хосте:

<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/public_html/example.com
SSLEngine on
SSLCertificateKeyFile /path/to/private.pem
SSLCertificateFile /path/to/cert.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Protocols h2 http/1.1
</VirtualHost>

Чтобы проверить, поддерживает ли ваш сервер HTTP/2, вы можете использовать инструменты разработки браузера. Ниже приведены скриншоты из браузеров Google Chrome и Apple Safari, на которых показан HTTP/2 в действии в домене https://example.com.

Хром

Сафари

Ссылки

  • RFC 7540
  • HTTP/2