Коротко о главном
HTTP/3 работает поверх QUIC и UDP, быстрее устанавливает соединение и лучше переносит потери пакетов. Nginx поддерживает его в свежих версиях, но не во всех дистрибутивных сборках. Прежде чем включать, нужно проверить версию и модули.
Для сайта HTTP/3 даёт ускорение на мобильных и нестабильных соединениях. Даже если выигрыш невелик, браузеры выбирают протокол автоматически, а откат на HTTP/2 остаётся доступным.
HTTP/3 в Nginx редко ломается сам по себе. Чаще проблема в неверной конфигурации, устаревшей версии или команде, скопированной без понимания. Разберём типичные сбои и способы их исправления.
Почему это происходит
Ошибки почти всегда связаны с контекстом: другая версия пакета, не тот пользователь, устаревший конфиг или команда из руководства для другой системы. HTTP/3 в Nginx не исключение. Поэтому сначала фиксируем исходное состояние, затем меняем одну вещь за раз.
Типичные ошибки
Ниже — сбои, которые встречаются чаще всего. Перед исправлением сохраните текущие конфиги и запишите, какие изменения вносите: так проще откатиться.
1. HTTP/3 не включается
Проверьте сборку Nginx, TLS 1.3 и открытый UDP-порт. Директивы http3/quic доступны не во всех версиях.
2. Сайт перестал открываться по HTTPS
Проверьте nginx -t и журнал. Верните резервную конфигурацию и перезагрузите службу; UDP-правила не влияют на TCP.
3. Браузер не переключается на HTTP/3
Очистите кэш Alt-Svc или проверьте тестом из другой сети. Некоторые прокси и антивирусы блокируют QUIC.
Как настроить правильно
Правильная последовательность проста: проверить версию и зависимости, сделать резервную копию конфигурации, внести минимальное изменение, проверить логи и только потом двигаться дальше.
Установка
В Debian, Ubuntu и Linux Mint используется пакетный менеджер APT:
sudo apt install nginx
В Fedora и RHEL-совместимых системах пакет ставится через DNF:
sudo dnf install nginx
В Arch Linux и производных пакет доступен в официальных репозиториях:
sudo pacman -S nginx
1. Проверьте поддержку
Модуль HTTP/3 должен быть собран в бинарнике. Если в выводе нет http_v3, потребуется другая сборка или репозиторий с новой версией.
nginx -V 2>&1 | tr ' ' '\n' | grep -i http_v3
nginx -v
2. Откройте UDP-порт
HTTP/3 использует UDP 443. Если открыт только TCP, браузер не сможет подключиться по новому протоколу.
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw status numbered
3. Настройте сервер
Добавьте директивы quic и http3 к существующему блоку. Не отключайте HTTP/2: он нужен как запасной вариант.
sudo nginx -t
sudo systemctl reload nginx
4. Проверьте извне
Локальная проверка может не показать QUIC. Используйте curl с поддержкой HTTP/3 и внешний тест.
curl --http3 -I https://example.com
curl -I https://example.com
Рабочий конфиг
Начните с минимального рабочего варианта. Не копируйте большой конфиг целиком: добавляйте параметры по одному и проверяйте результат после каждого изменения.
server {
listen 443 ssl;
listen 443 quic reuseport;
http2 on;
http3 on;
add_header Alt-Svc 'h3=":443"; ma=86400' always;
ssl_protocols TLSv1.2 TLSv1.3;
}
Практические советы
Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.
Совет 1. HTTP/3 требует TLS 1.3: без него протокол не включится.
HTTP/3 требует TLS 1.3: без него протокол не включится.
Совет 2. Не полагайтесь только на UDP: часть сетей блокирует его, и HTTP/2 долж
Не полагайтесь только на UDP: часть сетей блокирует его, и HTTP/2 должен оставаться рабочим.
Совет 3. Проверяйте поведение через мобильную сеть, а не только из локальной се
Проверяйте поведение через мобильную сеть, а не только из локальной сети.
Совет 4. Alt-Svc кэшируется браузером: после изменений может понадобиться очист
Alt-Svc кэшируется браузером: после изменений может понадобиться очистка.
Профилактика
Большинство повторяющихся сбоев с HTTP/3 в Nginx связано не с ошибкой в самой программе, а с окружением: обновились зависимости, изменился путь, закончилось место или другой администратор поправил конфиг. Поэтому профилактика начинается с фиксации исходного состояния.
Сохраните рабочий конфиг в систему контроля версий, добавьте короткий комментарий о том, зачем нужен каждый нестандартный параметр, и запишите команду проверки. Через месяц вы скажете себе спасибо: восстановить логику по чужому файлу без пояснений почти невозможно.
Чек-лист
- Версия пакета и конфигурация зафиксированы и доступны для сравнения.
- Есть автоматическая проверка синтаксиса перед перезапуском службы.
- Журналы ротуются, а диск не заполняется ими за неделю.
- Изменения проходят через тестовый стенд, а не сразу на рабочий сервер.
Итог
Большинство ошибок с HTTP/3 в Nginx лечится не переустановкой, а проверкой конфигурации, логов и прав доступа. Действуйте по одному изменению за раз — и причина быстро найдётся.