Categories: Инструкции

Apache + HTTP/2 на CentOS 7

Тематические термины: Apache , CentOS , HTTP/2

За поддержку данной функциональной возможности в Apache отвечает модуль http2_module. Для этого версия программного обеспечения веб-сервера должна быть 2.4.17 и выше. Также необходима библиотека TLS с поддержкой расширения ALPN (OpenSSL 1.0.2 и выше). В инструкции приведены примеры работы на операционной системе Linux CentOS, однако, принцип настройки apache http/2 схож и для других систем, например, Ubuntu, Debian. Рассмотренные варианты помогут как установить веб-сервер с нуля, так и перейти на 2-ю версию протокола на имеющемся сервере.

1. Обновление Apache

Если httpd еще не установлен, выполняем команду:

yum install httpd

Проверяем версию веб-сервера apache следующей командой:

httpd -v

Если она ниже 2.4.17, обновляем пакет.

На момент написания статьи, в стандартном репозитории CentOS не было подходящей версии Apache. Для начала, ставим epel:

yum install epel-release

Добавляем репозиторий от CodeIT:

cd /etc/yum.repos.d

wget https://repo.codeit.guru/codeit.el`rpm -q —qf «%{VERSION}» $(rpm -q —whatprovides redhat-release)`.repo

* если система выдаст ошибку, ставим wget командой yum install wget .

Обновляем httpd:

yum update httpd

Как правило, необходимый модуль устанавливается с обновлением. Но если этого не произошло, его можно установить следующей командой:

yum install mod_http2

* в Ubuntu установка модуля происходит командой a2enmod http2 .

С версии Apache 2.4.27 Multi-Processing Module (MPM) prefork не поддерживает http/2 и можно увидеть предупреждение the mpm module (prefork.c) is not supported by mod_http2 . Необходимо перейти на использование другого MPM — event или worker.

2. Создание сертификата

В качестве примера, будем использовать самоподписный сертификат. Создаем каталог для хранения ключей:

mkdir /etc/httpd/ssl

Генерируем сертификаты:

openssl req -new -x509 -days 1461 -nodes -out /etc/httpd/ssl/cert.pem -keyout /etc/httpd/ssl/cert.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.remontka.local/CN=test»

В боевой среде желательно использовать корректный сертификат. Для этого его можно купить или сгенерировать в Let’s Encrypt бесплатно.

3. Настройка Apache

Устанавливаем модуль поддержки ssl:

yum install mod_ssl

Открываем на редактирование следующий файл:

vi /etc/httpd/conf.d/ssl.conf

Редактируем следующие строки:

SSLCertificateFile /etc/httpd/ssl/cert.pem

SSLCertificateKeyFile /etc/httpd/ssl/cert.key

Проверяем настройки apache и перезапускаем его:

apachectl configtest

apachectl graceful

4. Тестирование

На этом основная настройка завершена. Чтобы проверить работу http/2, открываем браузер с установленным плагином «HTTP/2 and SPDY indicator» или пользуемся онлайн тестом — geekflare.com/tools/http2-test . Переходим по адресу https://<IP-адрес сервера>

Если мы генерировали самоподписный сертификат, браузер может выдать ошибку безопасности, игнорируем ее, продолжая загрузку сайта.

Настройка виртуального домена

Если необходима настройка нескольких доменов, настройка http/2 для конкретного из них выполняется следующим образом:

vi /etc/httpd/conf.d/virtual_domain.conf

<VirtualHost *:443>
ServerName site.ru
DocumentRoot /usr/share/httpd/noindex
Protocols h2 http/1.1
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
</VirtualHost>

* ServerName — домен сайта; DocumentRoot — расположение файлов сайта в системе; Protocols — версия протокола, в данном случае, http2 и http 1.1; SSLCertificateFile и SSLCertificateKeyFile — пути до файлов ключей, которые были сгенерированы нами ранее.

* напротив, чтобы запретить http/2 и принудительно использовать его первую версию, необходимо указать Protocols h1 http/1.1 .

Смотрите также

Как настроить NGINX для HTTP/2

Как настроить HTTP/2 на Windows Server

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago