Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

HTTP3_QUIC_SETUP Linux / DevOps

Настройка HTTP/3 (QUIC) в Nginx: сборка, конфиг listen quic и заголовок Alt-Svc

Обновлено: 21.08.2026
  • Клиенты не используют протокол HTTP/3, продолжая работать по TCP (HTTP/1.1 или HTTP/2).
  • В логах Nginx ошибки unknown directive "quic" при использовании устаревших версий без модуля ngx_http_v3_module.
  • UDP-пакеты блокируются межсетевым экраном (iptables/nftables/UFW/AWS Security Group) на порту 443.

1. Проверка поддержки HTTP/3 в установленном Nginx

nginx -V 2>&1 | grep -o -- "--with-http_v3_module"

(Поддержка HTTP/3 официально включена в стабильные релизы Nginx >= 1.25.0).

2. Открытие UDP порта 443 в файрволе

# UFW (Ubuntu/Debian)
ufw allow 443/udp

# Firewalld (RHEL/Rocky)
firewall-cmd --permanent --add-port=443/udp && firewall-cmd --reload

3. Конфигурация виртуального хоста Nginx для HTTP/3

Отредактируйте файл конфигурации сайта (например, /etc/nginx/conf.d/quic.conf):

server {
    # Стандартный TCP порт для HTTP/1.1 и HTTP/2
    listen 443 ssl;
    listen [::]:443 ssl;

    # UDP порт для HTTP/3 (QUIC)
    listen 443 quic reuseport;
    listen [::]:443 quic reuseport;

    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # QUIC строго требует протокол TLSv1.3
    ssl_protocols TLSv1.2 TLSv1.3;

    # Анонсирование поддержки HTTP/3 для браузеров
    add_header Alt-Svc 'h3=":443"; ma=86400' always;

    # Тюнинг QUIC
    quic_retry on;
    quic_gso on;
    ssl_early_data on;

    location / {
        # Добавление диагностического заголовка
        add_header X-Protocol $server_protocol always;
        root /var/www/html;
        index index.html;
    }
}

4. Валидация и перезапуск сервиса

nginx -t && systemctl restart nginx
💡 Практика специалистов: HTTP/3 работает поверх UDP. Если ваш сервер находится за Cloudflare или AWS ALB, убедитесь, что на уровне L4 балансировщика включен проброс UDP-трафика для порта 443.

Частые вопросы (FAQ)

Зачем нужен заголовок Alt-Svc (Alternative Service)?

Браузер не знает заранее, поддерживает ли сервер QUIC. Сначала он подключается по TCP (HTTP/2), получает заголовок Alt-Svc: h3=':443' и в последующих запросах переключается на UDP/HTTP/3.

Почему параметр reuseport можно указывать только один раз?

Параметр reuseport создает пул сокетов ядра SO_REUSEPORT на уровне сетевого стека. Он должен быть объявлен ровно один раз для каждой пары ip:port в конфигурации Nginx.

Полезные материалы
Рекомендуем