С момента создания Всемирной паутины (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 вы используете, выполните команду:
Из результатов видно, что мы используем самую последнюю версию — Apache 2.4.41 на момент написания этой статьи.
Включение HTTP/2 на виртуальном хосте Apache
Для начала убедитесь, что на веб-сервере запущен HTTP/1.1. Вы можете сделать это в браузере, открыв раздел инструментов разработчика в Google Chrome с помощью комбинации Ctrl + SHIFT + I. Нажмите на вкладку «Сеть» и найдите столбец «Протокол»:
Затем включите модуль HTTP/2 в Ubuntu, выполнив следующую команду:
Теперь найдите и отредактируйте файл виртуального хоста SSL, если вы включили HTTPS с помощью Let’s Encrypt, то у вас будет создан новый файл с суффиксом le-ssl.conf:
Вставьте указанную ниже директиву после тега <VirtualHost *: 443>:
Чтобы сохранить изменения, перезапустите веб-сервер Apache:
Чтобы проверить, включен ли HTTP/2, посмотрите на заголовки HTTP, используя следующую команду curl:
Вы должны получить следующий вывод:
Перезагрузите страницу в браузере. Затем вернитесь к инструментам разработчика и проверте наличие HTTP/2, он будет обозначен меткой h2 в столбце «Протокол»:
Использование модуля 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, отключите его, как показано ниже:
После этого отключите модуль prefork MPM:
После отключения предыдущих модулей, включите модули Event MPM, Fast_CGI и setenvif, как показано ниже:
Установка PHP-FPM в Ubuntu
Теперь установите и запустите PHP-FPM, как показано ниже:
Теперь активируйте PHP-FPM для запуска во время загрузки:
Включите PHP-FPM в качестве обработчика PHP Apache и перезапустите веб-сервер Apache, чтобы изменения вступили в силу:
Включение поддержки HTTP/2 в Apache Ubuntu
Теперь включим модуль HTTP/2:
Перезапустите Apache, чтобы синхронизировать все изменения:
Наконец, вы можете проверить, использует ли ваш сервер протокол HTTP/2, выполнить это можно с помощью команды curl:
Вы также можете использовать инструменты разработчика прямо в браузере Google Chrome, чтобы проверить результаты вашей работы. Мы надеемся, что эта статья оказалась для вас полезной и что вы сможете запросто включить HTTP/2 в Apache.
Спасибо за уделенное время на прочтение статьи!
Также предлагаем прочесть статью: Как установить Apache, MySQL/MariaDB и PHP на RHEL 8?
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet (программируемые сети) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.