Если совсем коротко, QUIC — это транспорт на основе UDP, поверх которого работает HTTP/3. Он убирает «узкие места» TCP ( berежно, без войн с сетевиками ) и заметно улучшает время отклика на нестабильных сетях: мобильный интернет, Wi-Fi с потерями, перегруженные каналы. С другой стороны, магии нет: QUIC раскрывается, только когда открыты нужные порты, правильно настроены сертификаты и сервер умеет говорить на языке HTTP/3. Ниже — живое, «без канцелярита» руководство, которое можно пройти за один вечер: проверяем поддержку в браузере, включаем QUIC/HTTP-3 на сервере, открываем UDP 443, подсказываем браузеру новые протоколы через DNS и валидируем результат.
Чтобы говорить на одном языке: формальное описание протокола лежит в RFC 9000 (QUIC, транспорт) и RFC 9114 (HTTP/3, маппинг HTTP поверх QUIC). Для «человеческого» введения удобно заглянуть в обзор Cloudflare .
Что такое QUIC и почему он ускоряет
В классическом мире HTTP/2 поверх TCP любое выпадение пакета блокирует очередь ( berежно называем это head-of-line blocking ). QUIC поверх UDP решает проблему иначе: мультиплексирует потоки на уровне транспорта и договаривается о шифровании в один раунд с TLS 1.3. Это даёт быстрое соединение и меньше «залипаний» при потере пакетов. В реальности вы видите меньше «призрачных» задержек, особенно на 4G/5G и публичном Wi-Fi.
Ещё один плюс для продакшна — миграция пути: QUIC переносит соединение между сетями без разрыва (например, вы перешли с Wi-Fi на мобильную сеть). Это не «серебряная пуля», но именно тут часто рождаются те самые «плюс 50–150 мс» к отзывчивости, которые ощущаются глазами и пальцами.
Сначала проверяем: браузер и сайт уже могут HTTP/3?
Поддержка в современных браузерах включена по умолчанию: Chrome/Edge, Firefox и Safari умеют HTTP/3. Быстрые проверки — через инструменты разработчика: добавьте колонку Protocol на вкладке Network и обновите страницу. Для наглядности можно открыть демо-страницы вроде Cloudflare QUIC или использовать онлайн-проверки HTTP/3 Check и APIVoid H3 . Если видите «h3» — значит, протокол зашёл.
Из терминала удобно тестировать curl
с поддержкой HTTP/3: флаги --http3
или строгий --http3-only
. Документация и примеры есть на curl.se . Мини-чек:
# с фоллбеком до h2/h1
curl -I --http3 https://example.com
# строго h3 (вернёт ошибку, если сервер не поддерживает HTTP/3)
curl -I --http3-only https://example.com
Включаем HTTP/3 на сервере: NGINX, Caddy, LiteSpeed, IIS
На уровне бэкенда задача простая: сервер должен уметь HTTP/3 и у вас должен быть открыт UDP 443. На NGINX и Caddy это делается за минуты, LiteSpeed включает QUIC «из коробки», а IIS на Windows Server 2022 требует один реестр-флажок и пару тонкостей. Ниже — конкретика и рабочие сниппеты.
NGINX 1.25+. Включите поддержку HTTP/3/QUIC (модуль ngx_http_v3_module
), используйте TLS 1.3 и подайте Alt-Svc. Официальные советы и параметры — в документации NGINX и описании модуля ngx_http_v3_module .
# пример server-блока NGINX
server {
# UDP-сокет для QUIC/HTTP3
listen 443 quic reuseport;
# TCP-сокет для HTTPS/HTTP2 (фоллбек)
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/example/fullchain.pem;
ssl_certificate_key /etc/ssl/example/privkey.pem;
ssl_protocols TLSv1.3;
# ускоряем первое подключение через объявление альтернативного сервиса
add_header Alt-Svc 'h3=":443"; ma=86400' always;
# опционально: 0-RTT, если ваша криптобиблиотека поддерживает
# ssl_early_data on;
root /var/www/html;
}
Caddy 2.6+. HTTP/3 включён по умолчанию — достаточно штатной конфигурации и открытого UDP 443. Документация по HTTP-модулю и опциям — на caddyserver.com и в разделе опций Caddyfile .
# Caddyfile: минимальная конфигурация
example.com {
root * /var/www/html
file_server
# Caddy сам выпустит/обновит сертификаты и будет слушать h1/h2/h3
}
LiteSpeed / OpenLiteSpeed. QUIC включён по умолчанию, нужно лишь HTTPS и открытый UDP 443. Детали — в руководстве LiteSpeed .
IIS / Windows Server 2022/Windows 11. Включите HTTP/3 в http.sys через реестр, убедитесь что открыт UDP 443, включён TLS 1.3 и заданы современные шифры (в том числе TLS_CHACHA20_POLY1305_SHA256
). Пошагово у Microsoft: официальный гайд и раздел ASP.NET Core + IIS на docs .
rem Запускайте из повышенного cmd/PowerShell
reg add "HKLMSYSTEMCurrentControlSetServicesHTTPParameters" ^
/v EnableHttp3 /t REG_DWORD /d 1 /f
rem Разрешить UDP 443 во встроенном файрволе
netsh advfirewall firewall add rule name="HTTP3 UDP 443" dir=in action=allow protocol=UDP localport=443
rem (опционально) включить современный шифр для лучшей совместимости
PowerShell: Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0
Не забываем про сеть: открываем UDP 443 и проверяем доступность
Самая частая причина «почему h3 не взлетел» — закрыт UDP 443 где-то по пути. На Linux-хосте проверьте локальный файрвол и облачные ACL. В ufw
это одна команда, для iptables
/nftables
— по правилу. И да, в корпоративных сетях прокси/GW иногда режут QUIC, поэтому всегда держите фоллбек на h2/h1.
# UFW (Ubuntu/Debian)
sudo ufw allow 443/udp
# firewalld (RHEL/CentOS)
sudo firewall-cmd --add-port=443/udp --permanent && sudo firewall-cmd --reload
# iptables
sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT
Снаружи удобно посмотреть онлайн-чекерами (они правда под капотом тоже гоняют curl
): http3check.net , Domsignal . Они сразу покажут протокол и поддерживаемые версии QUIC.
Подсказки браузеру: Alt-Svc и DNS HTTPS/SVCB
Чтобы клиент пришёл на HTTP/3 быстрее, сервер может рекламировать альтернативный протокол через заголовок Alt-Svc
(стандарт RFC 7838 ). Это тот самый заголовок из примеров NGINX выше. Браузер кэширует объявление и при следующем визите сразу пробует h3 (если UDP 443 доступен).
Ещё современнее — DNS-подсказка через записи HTTPS
/SVCB
из RFC 9460 . Они позволяют заявить поддерживаемые ALPN (например, h3
), альтернативные порты и даже подсказать IPv4/IPv6-хинты. Крупные CDN уже это поддерживают: у AWS есть включение HTTPS-записей для CloudFront/Route 53 ( анонс ), у Fastly есть отдельный гайд по включению HTTP/3 на сервисах ( документация Fastly ), у Cloudflare — простая «галка» на панели ( доки ).
Отладка и замеры: DevTools, curl и онлайн-сервисы
Мини-набор для проверки «что реально полетело по h3». В браузере откройте DevTools → Network → добавьте колонку Protocol (Chrome: справка , Firefox: документация ). Обновите страницу, убедитесь, что основная HTML-страница и критичные ресурсы уходят по «h3».
В терминале фиксируем статус-код и протокол, чтобы скриптом гонять регрессию:
# статус-код + HTTP/3 только
curl -s -o /dev/null -w "%{http_code} %{url_effective}
" --http3-only https://example.com
# заголовки ответа и проверка Alt-Svc
curl -I --http3 https://example.com | sed -n '1,10p'
Если всё хорошо, онлайн-проверки вроде HTTP/3 Check покажут «QUIC/HTTP3 supported», а локальный curl --http3-only
перестанет спотыкаться о timeout.
Типичные проблемы и быстрые фиксы
Если после выката «всё равно h2», проверьте четыре точки: открыт ли UDP 443, нет ли анти-QUIC политик на периметре (некоторые SWG/прокси умеют вырезать QUIC), корректны ли сертификаты/цепочка, и не забыли ли вы про Alt-Svc/DNS HTTPS. На IIS часто спасает простая тройка: реестр EnableHttp3=1
, разрешение UDP 443 и включённый TLS 1.3 с современными шифрами (подсказки у Microsoft в гайде выше).
На NGINX распространённый нюанс — забытый listen 443 quic
или Alt-Svc. На Caddy/LightSpeed всё обычно упирается в файрвол и внешний сетевой профиль. На CDN — в чекбокс «Enable HTTP/3» для дистрибуции (у AWS CloudFront включается в «Supported HTTP versions», анонс ).
Чек-лист на 15 минут
Чтобы не тонуть в деталях, держите короткую шпаргалку. Пройдитесь по шагам — и у вас почти наверняка загорится «h3» в DevTools.
- Проверьте, что браузер реально говорит на HTTP/3 (DevTools → Protocol, или http3check ).
- Обновите сервер до версии с поддержкой HTTP/3 (NGINX 1.25+, Caddy 2.6+, LiteSpeed — уже «умеет», IIS — Windows Server 2022/Windows 11).
- Включите HTTP/3 на сервере (см. примеры выше) и отдавайте
Alt-Svc
. - Откройте UDP 443 на хосте и в облачных ACL/брандмауэре.
- Проверьте TLS 1.3 и сертификаты (без них QUIC не взлетит).
- Добавьте DNS-запись
HTTPS
/SVCB
с ALPN=h3
для ускорения «первого визита» (по возможности). - Проверьте
curl --http3-only
и убедитесь, что онлайн-чекеры видят QUIC/HTTP3.
Финальные заметки и немного прагматики
QUIC/HTTP-3 — это дешёвая оптимизация времени отклика, особенно для «сложных» сетей. Нет смысла ждать «год внедрения»: начните с фронтового прокси (Caddy/NGINX) или включите HTTP/3 на CDN, а затем постепенно подтягивайте остальной стек. Пара часов тестов даст прозрачную картину: где вы выигрываете миллисекунды, а где упираетесь в код и базу данных. И да, хорошие метрики важнее легенд: снимайте «до/после» SLO на реальных запросах, а не только на синтетике.
Если хочется копнуть глубже — смотрите первоисточники: RFC 9000 (QUIC), RFC 9114 (HTTP/3), практику NGINX по QUIC ( документация ), гайды по Caddy ( HTTP-модуль ), и «человеческие» объяснения от Cloudflare . На стороне клиентов удобнее всего жить с curl --http3 и DevTools.