Гид по технологиям

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

• 4 min read • Инфраструктура • Обновлено 26 Nov 2025
HTTP/2 в Nginx: включение и проверка
HTTP/2 в Nginx: включение и проверка

Схематичное изображение протокола HTTP/2 и взаимодействия клиента с сервером

HTTP/2 — это версия протокола Hypertext Transfer Protocol, стандартизованная в RFC 7540 в 2015 году. Основная цель протокола — повысить производительность: снизить задержки, оптимизировать использование сетевых и серверных ресурсов и позволить браузеру эффективно работать по одной TCP-сессии. Методология и семантика HTTP (методы, коды ответа) совместимы с предыдущими версиями.

Nginx поддерживает HTTP/2 начиная с версии 1.9.5. В этом руководстве предполагается, что у вас уже настроен TLS (сертификат от Let’s Encrypt или самоподписанный сертификат) и вы умеете управлять конфигурацией Nginx на вашей Linux-системе.

Требования

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

  • Nginx версии 1.9.5 или выше. Проверить версию:
nginx -v
  • OpenSSL версии 1.0.2 или выше. Проверить версию OpenSSL:
openssl version
  • SSL/TLS-сертификат от Let’s Encrypt либо самоподписанный.
  • Включённый протокол TLS 1.2 или выше — реализации HTTP/2 поверх TLS требуют TLS 1.2+.

Важно: некоторые дистрибутивы и сборки Nginx могут поставляться с устаревшим OpenSSL или без включённой поддержки ALPN — в таких случаях обновление OpenSSL или пересборка Nginx может понадобиться.

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

Чтобы включить HTTP/2, добавьте параметр http2 к директиве listen в конфигурации виртуального хоста. После правки перезагрузите Nginx.

listen 443 ssl http2;

Перезагрузите конфигурацию:

sudo systemctl reload nginx.service

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

server {  
  
  listen 443 ssl http2;  
  listen [::]:443 ssl http2;  
  
  server_name example.com;  
  root /path/to/public;  
  
  ssl_certificate /path/to/certificate.crt;  
  ssl_certificate_key /path/to/private.key;  
  
  ssl_protocols TLSv1.2;  
  
}  

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

Проверка поддержки HTTP/2

Способы проверки:

  • В инструментах разработчика браузера (Chrome/Firefox) на вкладке Network обычно отображается используемый протокол (h2 для HTTP/2).

Скриншот панели разработчика Chrome с выделенным HTTP/2

  • Используйте curl (если поддерживает HTTP/2):
curl -I --http2 https://example.com
  • Логирование в Nginx: встроенная переменная $http2 показывает negotiated protocol. Пример формата лога, включающего $http2:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http2"';
access_log /var/log/nginx/access.log main;

При успешном согласовании TLS и HTTP/2 в лог будет записано “h2”. Для HTTP/2 без TLS (h2c) — будет “h2c”.

Когда HTTP/2 не подходит

  • Старые клиенты или промежуточные прокси, которые не поддерживают HTTP/2, могут разрывать соединение или возвращать ошибки.
  • Если на инфраструктуре стоит TLS-терминирующий балансировщик, который не поддерживает ALPN/HTTP/2, обновите балансировщик или включите поддержку HTTP/2 на нём.
  • Требования к безопасности: если вы обязаны использовать только TLS 1.3 в организации, убедитесь, что стек поддерживает её; при этом HTTP/2 работает и с TLS 1.3.
  • В случае, когда требуется применение QUIC/HTTP/3 (например, при высоких потерях пакетов), HTTP/3 может дать лучшие результаты.

Альтернативные подходы

  • Оставить HTTP/1.1 при несовместимости стеков или для упрощения отладки.
  • Перейти на HTTP/3 (QUIC) для сетей с высокой потерей пакетов и высокой задержкой.
  • Использовать прокси-сервер или CDN, который терминейт TLS и предоставляет HTTP/2/3 поверх своей инфраструктуры.

Мини-методология: быстрый чек-лист

  1. Проверить версии Nginx и OpenSSL.
  2. Убедиться в наличии сертификата TLS.
  3. Добавить http2 к директиве listen в конфиге виртуального хоста.
  4. Перезагрузить Nginx.
  5. Проверить работу через браузер, curl и лог-файлы.
  6. Наблюдать метрики производительности и ошибки после включения.

Ролевые чеклисты

  • DevOps:

    • Обновить Nginx/OpenSSL при необходимости.
    • Включить http2 в конфиге и перезапустить сервис.
    • Настроить логирование $http2.
  • Разработчик:

    • Тестировать поведение приложения при одновременных запросах (вебсокеты, long-polling).
    • Проверить работу при отключенном HTTP/2 для совместимости.
  • QA:

    • Проверить корректность заголовков, статусов и контента через HTTP/2.
    • Провести нагрузочное тестирование и сравнить метрики с HTTP/1.1.
  • Безопасность:

    • Убедиться в использовании TLS 1.2+ и сильных шифров.
    • Проверить доступ к приватным ключам и обновление сертификатов.

Факт-бокс: ключевые числа

  • RFC: 7540 (2015)
  • Минимальная версия Nginx с поддержкой HTTP/2: 1.9.5
  • Минимальная версия OpenSSL для ALPN: 1.0.2
  • Требуемая версия TLS для HTTP/2 поверх TLS: TLS 1.2+

Критерии приёмки

  • Сервер отвечает по HTTPS и в логах/инструментах браузера видно протокол h2.
  • Нет регрессий в функциональности API и статического контента.
  • Метрики задержек и пропускной способности не ухудшились после включения.

Полезные советы и примечания

Важно: ALPN (Application-Layer Protocol Negotiation) — ключевая часть согласования HTTP/2 поверх TLS. Если используемый OpenSSL или сборка Nginx не поддерживает ALPN, браузеры не перейдут на HTTP/2.

Примечание: включение http2 в директиве listen не влияет на поведение HTTP/1.1 клиентов — они продолжат работать.

Итог

Включение HTTP/2 в Nginx — в большинстве случаев простая операция: убедитесь в версиях ПО и TLS, добавьте http2 к listen, перезагрузите сервис и проверьте через браузер или curl. Для сложных инфраструктур учитывайте балансировщики, прокси и поддержку ALPN.

Ссылки

  • RFC 7540
  • HTTP/2
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро