Как включить HTTP/2 в Apache в Ubuntu?

Как включить HTTP/2 в Apache в Ubuntu?

Apache

С момента создания Всемирной паутины (www) протокол HTTP на протяжении многих лет развивался для обеспечения безопасного и быстрого цифрового соединения через Интернет. Наиболее широко используемой версией является HTTP/1.1, и, хотя она содержит ряд улучшений и оптимизаций производительности для устранения недостатков более ранних версий, всё же ей не хватает нескольких других важных функций, которые были реализованы в HTTP/2.

 

Каковы ограничения HTTP/1.1?

Протокол HTTP/1.1 имеют следующие недостатки, которые делают его не идеальным, особенно при работе веб-серверов с большим количеством трафика:

  • Задержки при загрузке веб-страниц из-за длинных заголовков HTTP.
  • HTTP/1.1 может отправлять только один запрос для каждого файла на каждое TCP соединение.
  • Учитывая, что HTTP/1.1 обрабатывает один запрос для каждого TCP-соединения, браузеры вынуждены отправлять поток параллельных TCP-соединений для одновременной обработки запросов. Это приводит к перегрузке TCP и, в конечном итоге, к потере пропускной способности и ухудшению работы сети.

 

Вышеупомянутые проблемы часто приводили к снижению производительности и высоким накладным расходам при использовании полосы пропускания. HTTP/2 был создан как раз для решения этих проблем.

 

Преимущества использования HTTP/2

Протокол http/2 предлагает следующие преимущества:

  • Сжатие заголовка, которое минимизирует запросы клиентов и тем самым снижает потребление пропускной способности. Результирующий эффект — высокая скорость загрузки страницы.
  • Мультиплексирование нескольких запросов по одному TCP-соединению. И сервер, и клиент могут разбить HTTP-запрос на несколько сегментов и перегруппировать их.
  • Более быстрая выдача веб-результатов, которая в итоге приводят к лучшему ранжированию SEO.
  • Повышенная безопасность, поскольку большинство основных браузеров загружают HTTP/2 через HTTPS.
  • HTTP/2 считается более мобильным решением благодаря функции сжатия заголовков.
    Тем не менее, мы собираемся включить HTTP/2 на Apache в Ubuntu 20.04 LTS и Ubuntu 18.04 LTS.

 

Предварительные требования

Перед началом работы убедитесь, что вы включили HTTPS на веб-сервере Apache, прежде чем включать HTTP/2.

У нас есть доменное имя, указывающее на конкретный сервер на Ubuntu 20.04, на котором работает сервер Apache, защищенный с помощью сертификата, например Let’s Encrypt.

Кроме того, рекомендуем вам обновится до Apache 2.4.26 и более поздние версии для производственных серверов, при намерении перейти на HTTP/2.

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

$ apache2 -v

 

Как включить HTTP/2 в Apache в Ubuntu?

 

Из результатов видно, что мы используем самую последнюю версию — Apache 2.4.41 на момент написания этой статьи.

 

Включение HTTP/2 на виртуальном хосте Apache

Для начала убедитесь, что на веб-сервере запущен HTTP/1.1. Вы можете сделать это в браузере, открыв раздел инструментов разработчика в Google Chrome с помощью комбинации Ctrl + SHIFT + I. Нажмите на вкладку «Сеть» и найдите столбец «Протокол»:

Confirm-HTTP-Protocol-Version

 

Затем включите модуль HTTP/2 в Ubuntu, выполнив следующую команду:

$ sudo a2enmod http2

 

Как включить HTTP/2 в Apache в Ubuntu?

 

Теперь найдите и отредактируйте файл виртуального хоста SSL, если вы включили HTTPS с помощью Let’s Encrypt, то у вас будет создан новый файл с суффиксом le-ssl.conf:

$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

 

Вставьте указанную ниже директиву после тега <VirtualHost *: 443>:

Protocols h2 http/1.1

 

Enable-HTTP_2-on-Apache

 

 

Чтобы сохранить изменения, перезапустите веб-сервер Apache:

$ sudo systemctl restart apache2

 

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

$ curl -I --http2 -s https://domain.com/ | grep HTTP

 

Check-HTTP_2-Support-in-Apache

 

Вы должны получить следующий вывод:

HTTP/2 200

 

Перезагрузите страницу в браузере. Затем вернитесь к инструментам разработчика и проверте наличие HTTP/2, он будет обозначен меткой h2 в столбце «Протокол»:

Как включить HTTP/2 в Apache в Ubuntu?

 

Использование модуля mod_php с Apache

Если вы используете Apache вместе с модулем mod_php, вам нужно переключиться на PHP-FPM. Это связано с тем, что модуль mod_php использует модуль MPM prefork, который не поддерживается HTTP/2. Вам нужно удалить prefork MPM и переключиться на модуль mpm_event, который будет поддерживаться HTTP/2.

Если вы используете модуль PHP 7.4 mod_php, отключите его, как показано ниже:

$ sudo a2dismod php7.4 

 

Disable-mod_php-Module

 

После этого отключите модуль prefork MPM:

$ sudo a2dismod mpm_prefork

 

Disable-Prefork-MPM-in-Apache

 

После отключения предыдущих модулей, включите модули Event MPM, Fast_CGI и setenvif, как показано ниже:

$ sudo a2enmod mpm_event proxy_fcgi setenvif

 

Как включить HTTP/2 в Apache в Ubuntu?

 

Установка PHP-FPM в Ubuntu

Теперь установите и запустите PHP-FPM, как показано ниже:

$ sudo apt install php7.4-fpm
$ sudo systemctl start php7.4-fpm

 

Теперь активируйте PHP-FPM для запуска во время загрузки:

$ sudo systemctl enable php7.4-fpm

 

Включите PHP-FPM в качестве обработчика PHP Apache и перезапустите веб-сервер Apache, чтобы изменения вступили в силу:

$ sudo a2enconf php7.4-fpm

 

Включение поддержки HTTP/2 в Apache Ubuntu

Теперь включим модуль HTTP/2:

$ sudo a2enmod http2

 

Перезапустите Apache, чтобы синхронизировать все изменения:

$ sudo systemctl restart apache2

 

Наконец, вы можете проверить, использует ли ваш сервер протокол HTTP/2, выполнить это можно с помощью команды curl:

$ curl -I --http2 -s https://domain.com/ | grep HTTP

 

Check-HTTP_2-Protocol-in-Apache

 

Вы также можете использовать инструменты разработчика прямо в браузере Google Chrome, чтобы проверить результаты вашей работы. Мы надеемся, что эта статья оказалась для вас полезной и что вы сможете запросто включить HTTP/2 в Apache.

 

 

Спасибо за уделенное время на прочтение статьи!

Также предлагаем прочесть статью: Как установить Apache, MySQL/MariaDB и PHP на RHEL 8?

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Apache

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню