Гайды

Основы HTTP/2 и HTTP/3

Мультиплексирование и HPACK, QUIC и UDP, server push vs preload, ALPN и метрики после включения.

~8 мин чтения

Основы HTTP/2 и HTTP/3

HTTP/2 мультиплексирует запросы в одном TCP соединении (бинарные фреймы), server push (редко используется), заголовки HPACK. HTTP/3 переносит транспорт на QUIC (UDP): меньше head-of-line blocking при потере пакетов, быстрее установка (0-RTT с оговорками безопасности). Балансировщики — HAProxy vs Nginx.


1. HTTP/2 для сайта

Терминация TLS на Nginx/CDN с http2 на директиве listen 443 ssl http2;. Браузеры требуют TLS для h2 в вебе.


2. Серверный push

Загрузка «критического» CSS заранее — часто менее выгодна, чем хороший preload в HTML; оценивайте по метрикам.


3. HTTP/3 (QUIC)

  • Отдельный UDP порт (часто 443 совмещён через ALT-SVC заголовок).
  • Firewall должен пропускать UDP.
  • CDN (Cloudflare, Fastly) часто включают h3 проще, чем свой origin.

4. Обратная совместимость

Клиент и сервер negotiate (ALPN): сначала h3 если доступен, иначе h2/h1.1.


5. Потоки, приоритеты и HPACK

В HTTP/2 несколько запросов делят одно TCP-соединение; stream prioritization и flow control влияют на порядок доставки фреймов. HPACK сжимает заголовки; дублирующиеся заголовки эффективнее за счёт таблицы — не раздувайте кастомными заголовками без нужды.


6. 0-RTT в QUIC

Early data ускоряет повторные соединения, но подвержено replay-атакам; для запросов с побочными эффектами (POST, платежи) сервер должен отклонять или ограничивать 0-RTT по политике.


7. Прокси и «прозрачный» HTTP/2

Внутри датацентра часто терминируют TLS на L7-балансировщике и идут к приложению по plain HTTP/2 или HTTP/1.1 — проще отладка и mTLS между слоями. Убедитесь, что приложение понимает X-Forwarded-Proto: https, иначе редиректы и secure-cookies сломаются.


8. Отладка с клиента

bash
curl -I --http2 https://example.com
curl -I --http3 https://example.com   # если сборка curl с QUIC

Заголовок ответа alt-svc: h3=":443" подсказывает браузеру попробовать QUIC к тому же хосту. Если h3 «не цепляется», проверьте UDP 443 до origin и политики CDN (иногда h3 только на edge).


9. Чек-лист

  • Логи и WAF понимают QUIC, если включили h3.
  • Не полагаться на порядок фреймов как на гарантию бизнес-логики.
  • Тестировать TTFB и LCP до/после включения h2/h3.
  • Проверить максимальный размер заголовков на прокси (HTTP/2 «large headers»).
  • TLS 1.3 и корректные шифры на терминации — SSL/TLS.

Дальше: тег «Сеть»