Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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