Skip to content
EN

Как включить HTTP/2 на сайте

Коротко:

HTTP/2 — бинарный мультиплексированный протокол, который в 10-30% случаев ускоряет сайт без изменений кода. Требования: HTTPS (обязательно), nginx ≥ 1.9.5, Apache ≥ 2.4.17 с mod_http2, OpenSSL ≥ 1.0.2 с ALPN. Активация — одна строка в конфиге. Для Cloudflare/CDN — включено по умолчанию.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Проверить SSL своего сайта →

Пошаговая настройка

  1. Проверьте версии: nginx -V (нужно ≥ 1.9.5), openssl version (≥ 1.0.2 для ALPN)
  2. В конфиге nginx замените listen 443 ssl; на listen 443 ssl http2;
  3. Для Apache: a2enmod http2 + добавить Protocols h2 http/1.1 в vhost
  4. Проверьте синтаксис: nginx -t / apachectl configtest
  5. Reload: systemctl reload nginx / systemctl reload apache2
  6. Проверьте через SSL/TLS чекер Enterno.io — ALPN покажет h2
  7. Или в консоли: curl -I --http2 https://example.com

Рабочие примеры

СценарийКонфиг / запись
nginx minimalserver { listen 443 ssl http2; server_name example.com; ssl_certificate /path/fullchain.pem; ssl_certificate_key /path/privkey.pem; }
Apache 2.4.17+Protocols h2 http/1.1 (внутри <VirtualHost *:443>)
CloudflareDashboard → Network → HTTP/2 = ON (по умолчанию)
HTTP/2 Push (deprecated)Chrome 106+ убрал поддержку Server Push. Используйте <code>103 Early Hints</code>.

Типичные ошибки

  • HTTP/2 работает ТОЛЬКО через HTTPS — браузеры не поддерживают HTTP/2 cleartext
  • OpenSSL старше 1.0.2 (CentOS 6, Ubuntu 14.04) — не умеет ALPN → HTTP/2 недоступен
  • Apache/prefork MPM несовместим с mod_http2 — переключитесь на event MPM
  • Множество параллельных соединений (browser pooling) в HTTP/1.1 было быстрее для некоторых сайтов — тестируйте

TL;DR: Как включить HTTP/2 в Nginx и Apache

Чтобы включить HTTP/2 в Nginx, добавьте строку http2 в директиву listen вашего конфигурационного файла. Для Apache используйте модуль mod_http2, активировав его через a2enmod http2 и добавив Protocols h2 http/1.1 в конфигурацию виртуального хоста. Обязательно проверьте поддержку TLS, так как HTTP/2 работает только через HTTPS.

Включение HTTP/2 в Nginx

Для активации HTTP/2 в Nginx необходимо внести изменения в конфигурационный файл вашего сервера. Следуйте этим шагам:

  1. Откройте файл конфигурации Nginx, обычно находящийся по пути /etc/nginx/nginx.conf или в директории /etc/nginx/sites-available/.
  2. Найдите секцию server, отвечающую за ваш сайт.
  3. Измените директиву listen следующим образом:
server {
    listen 443 ssl http2;
    server_name example.com;
    # другие директивы
}

Не забудьте добавить или обновить SSL-сертификаты, так как HTTP/2 требует HTTPS. После внесения изменений проверьте конфигурацию командой:

sudo nginx -t

Если конфигурация прошла проверку, перезапустите Nginx:

sudo systemctl restart nginx

Теперь ваш сервер должен поддерживать HTTP/2. Вы можете проверить это с помощью инструмента, такого как KeyCDN HTTP/2 Test.

Включение HTTP/2 в Apache

Для активации HTTP/2 в Apache выполните следующие действия:

  1. Убедитесь, что у вас установлен модуль mod_http2. Для этого выполните команду:
a2enmod http2

После этого необходимо добавить поддержку HTTP/2 в конфигурацию вашего виртуального хоста. Откройте файл конфигурации, например, /etc/apache2/sites-available/000-default.conf, и добавьте следующую строку в секцию <VirtualHost *:443>:

Protocols h2 http/1.1

Убедитесь, что у вас также настроены SSL-сертификаты. Если они отсутствуют, вы можете использовать Let's Encrypt для их получения. После внесения изменений проверьте конфигурацию:

apachectl configtest

Если тест прошел успешно, перезапустите Apache:

sudo systemctl restart apache2

Теперь ваш сервер Apache должен поддерживать HTTP/2. Для проверки также можно воспользоваться инструментами, такими как KeyCDN HTTP/2 Test.

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

Для включения HTTP/2 в Nginx и Apache необходимо внести изменения в конфигурационные файлы серверов. В Nginx это делается с помощью директивы listen, а в Apache — с использованием модуля mod_http2. Убедитесь, что ваш сервер поддерживает SSL/TLS, так как HTTP/2 работает только по защищенному соединению. После внесения изменений перезапустите сервер для применения новых настроек.

Настройка HTTP/2 в Nginx: пошаговое руководство

Для активации HTTP/2 в Nginx вам потребуется выполнить несколько шагов. Прежде всего, убедитесь, что у вас установлена версия Nginx 1.9.5 или выше, так как поддержка HTTP/2 была добавлена именно в этой версии.

Шаг 1: Проверка версии Nginx

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

nginx -v

Если версия ниже 1.9.5, обновите Nginx до последней версии.

Шаг 2: Включение SSL

HTTP/2 требует, чтобы соединение было защищенным, поэтому вам нужно настроить SSL. Если у вас уже есть сертификат, убедитесь, что он корректно установлен. Если нет, можно использовать бесплатный сертификат от Let's Encrypt.

Шаг 3: Изменение конфигурации

Откройте конфигурационный файл вашего сайта, который обычно находится по пути /etc/nginx/sites-available/ваш_сайт. Найдите директиву listen и измените её следующим образом:

listen 443 ssl http2;

Также убедитесь, что у вас указаны пути к SSL-сертификатам:

ssl_certificate /etc/letsencrypt/live/ваш_сайт/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваш_сайт/privkey.pem;

Шаг 4: Перезапуск Nginx

После внесения изменений перезапустите Nginx, чтобы применить новые настройки:

sudo systemctl restart nginx

Теперь HTTP/2 должен быть активирован. Вы можете проверить это, используя инструменты, такие как HTTP/2 Test.

Шаг 5: Оптимизация

После активации HTTP/2 рекомендуется оптимизировать конфигурацию сервера для достижения максимальной производительности. Например, вы можете включить gzip сжатие и настроить keepalive для улучшения работы с клиентами.

gzip on;
keepalive_timeout 65;

Следуя этим шагам, вы сможете успешно включить HTTP/2 в Nginx и улучшить производительность вашего сайта.

СертификатСрок, издатель, домены (SAN)
ЦепочкаПроверка промежуточных и корневых CA
TLS-протоколВерсия TLS и набор шифров
УязвимостиHeartbleed, POODLE, слабые шифры

Почему нам доверяют

TLS 1.3
поддержка
Полная
цепочка CA
<2с
результат
30/14/7
дней до истечения

Как это работает

1

Введите домен

2

Проверка цепочки TLS

3

Дата истечения и уязвимости

Что проверяет SSL-тест?

SSL/TLS — протокол шифрования, который защищает данные между браузером и сервером. Наш инструмент анализирует сертификат, цепочку доверия, версию TLS и известныеуязвимости.

Детали сертификата

Издатель, срок действия, алгоритм подписи, покрываемые домены (SAN) и тип валидации (DV/OV/EV).

Цепочка доверия

Проверка полной цепочки: от конечного сертификата через промежуточные до корневого CA.

Анализ TLS

Версия протокола (TLS 1.2/1.3), набор шифров, поддержка Perfect Forward Secrecy (PFS).

Оповещения об истечении

Создайте монитор — получайте уведомления в Telegram и email за 30/14/7 дней до истечения.

DV vs OV vs EV сертификаты

DV (Domain Validation)
  • Подтверждение только владения доменом
  • Выдаётся за минуты автоматически
  • Бесплатно через Let's Encrypt
  • Подходит для большинства сайтов
  • Самый распространённый тип
OV / EV
  • Проверка организации (OV) или расширенная проверка (EV)
  • Выдаётся за 1-5 рабочих дней
  • Стоимость от $50 до $500/год
  • Для финансов, e-commerce, госсайтов
  • Повышает доверие пользователей

Кому это нужно

DevOps

мониторинг SSL-сертификатов

Безопасность

аудит TLS-конфигурации

SEO

HTTPS как фактор ранжирования

E-commerce

доверие покупателей

Частые ошибки

Истёкший сертификатБраузеры блокируют сайт с истёкшим SSL. Настройте автопродление или мониторинг.
Неполная цепочка сертификатовБез промежуточного CA некоторые браузеры и боты не смогут верифицировать сертификат.
Mixed content на HTTPS-сайтеHTTP-ресурсы на HTTPS-странице — замок в браузере пропадает, снижается доверие.
Использование TLS 1.0/1.1Устаревшие версии TLS содержат известные уязвимости. Используйте TLS 1.2+ или 1.3.
Несовпадение домена в сертификатеСертификат должен покрывать все домены сайта, включая www и поддомены.

Лучшие практики

Настройте автопродлениеLet's Encrypt + certbot с cron — сертификат обновляется автоматически каждые 60-90 дней.
Включите HSTSЗаголовок Strict-Transport-Security заставляет браузер всегда использовать HTTPS.
Используйте TLS 1.3TLS 1.3 быстрее (1-RTT handshake) и безопаснее — убраны устаревшие шифры.
Мониторьте срок действияСоздайте монитор на Enterno.io — получайте уведомления задолго до истечения.
Проверяйте цепочку после обновленияПосле обновления сертификата убедитесь, что промежуточные сертификаты установлены.

Получите больше с бесплатным аккаунтом

Мониторинг SSL-сертификатов, история проверок и уведомления за 30 дней до истечения.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

HTTP/2 быстрее HTTP/1.1 всегда?

Нет. На сайтах с одним большим JS-бандлом разница минимальна. На сайтах со многими ресурсами (CSS + много картинок + шрифты) — HTTP/2 даёт 10-30% выигрыша за счёт multiplexing.

Нужно ли менять код?

Нет. HTTP/2 — уровень транспорта, API идентичен. Уберите только старые "оптимизации" (domain sharding, inline критики) — они мешают HTTP/2.

А HTTP/3 уже можно?

Да, с nginx 1.25 (март 2023) stable. Или через Cloudflare — автоматически. Выигрыш на мобильных сетях. См. <a href="/s/research-http3-quic-adoption-2026">наше исследование HTTP/3 adoption</a>.

Как проверить что HTTP/2 реально работает?

<a href="/ssl">SSL-чекер Enterno.io</a> или <code>curl -I --http2 https://site.com</code> — в ответе должно быть <code>HTTP/2 200</code>.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.