Модуль ngx_http_v3_module
Модуль ngx_http_v3_module (1.25.0) обеспечивает
экспериментальную поддержку
HTTP/3.
По умолчанию этот модуль не собирается, его сборку необходимо
разрешить с помощью конфигурационного параметра
--with-http_v3_module.
Для сборки и работы этого модуля нужна библиотека OpenSSL версии 1.1.1 или выше.
Для поддержки 0-RTT нужна библиотека OpenSSL версии 3.5.1 или выше. Также возможно использование библиотек BoringSSL, LibreSSL, QuicTLS.
Известные проблемы
Модуль экспериментальный, поэтому возможно всё.
До версии 1.29.1 поддержка 0-RTT не могла быть разрешена при использовании OpenSSL независимо от значения директивы ssl_early_data.
Сборка модуля не поддерживается на платформе Win32.
Пример конфигурации
http {
    log_format quic '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" "$http3"';
    access_log logs/access.log quic;
    server {
        # для лучшей совместимости рекомендуется
        # использовать одинаковый порт для http/3 и https
        listen 8443 quic reuseport;
        listen 8443 ssl;
        ssl_certificate     certs/example.com.crt;
        ssl_certificate_key certs/example.com.key;
        location / {
            # используется для объявления о поддержке http/3
            add_header Alt-Svc 'h3=":8443"; ma=86400';
        }
    }
}
Директивы
| Синтаксис: | 
            http3  | 
                
|---|---|
| Умолчание: | 
            http3 on;  | 
                
| Контекст: | 
            http, server | 
                
Разрешает согласование протокола HTTP/3.
| Синтаксис: | 
            http3_hq  | 
                
|---|---|
| Умолчание: | 
            http3_hq off;  | 
                
| Контекст: | 
            http, server | 
                
Разрешает согласование протокола HTTP/0.9, используемого в функциональных тестах QUIC.
| Синтаксис: | 
            http3_max_concurrent_streams  | 
                
|---|---|
| Умолчание: | 
            http3_max_concurrent_streams 128;  | 
                
| Контекст: | 
            http, server | 
                
Задаёт максимальное число параллельных HTTP/3-потоков в соединении.
| Синтаксис: | 
            http3_stream_buffer_size  | 
                
|---|---|
| Умолчание: | 
            http3_stream_buffer_size 64k;  | 
                
| Контекст: | 
            http, server | 
                
Задаёт размер буфера, используемого для чтения и записи QUIC-потоков.
| Синтаксис: | 
            quic_active_connection_id_limit  | 
                
|---|---|
| Умолчание: | 
            quic_active_connection_id_limit 2;  | 
                
| Контекст: | 
            http, server | 
                
Устанавливает
значение транспортного параметра QUIC active_connection_id_limit.
Это максимальное значение ID соединений,
возможное для хранения на сервере.
| Синтаксис: | 
            quic_bpf  | 
                
|---|---|
| Умолчание: | 
            quic_bpf off;  | 
                
| Контекст: | 
            main | 
                
Разрешает маршрутизацию пакетов QUIC при помощи eBPF. Если маршрутизация включена, то обеспечивается поддержка миграции QUIC-соединений.
Директива поддерживается только на Linux 5.7+.
| Синтаксис: | 
            quic_gso  | 
                
|---|---|
| Умолчание: | 
            quic_gso off;  | 
                
| Контекст: | 
            http, server | 
                
Разрешает отправку оптимизированного пакетного режима при помощи segmentation offloading.
Оптимизированная отправка поддерживается только на Linux
с поддержкой UDP_SEGMENT.
| Синтаксис: | 
            quic_host_key  | 
                
|---|---|
| Умолчание: | — | 
| Контекст: | 
            http, server | 
                
Задаёт файл с секретным ключом, применяемым при шифровании
stateless reset и address validation токенов.
По умолчанию создаётся случайный ключ при каждой перезагрузке.
Токены, созданные при помощи старых ключей, не принимаются.
| Синтаксис: | 
            quic_retry  | 
                
|---|---|
| Умолчание: | 
            quic_retry off;  | 
                
| Контекст: | 
            http, server | 
                
Разрешает функциональность
QUIC
Address Validation,
в том числе отправку нового токена в Retry-пакете
или NEW_TOKEN frame
и
валидацию токена, полученного в Initial-пакете.
Встроенные переменные
Модуль ngx_http_v3_module
поддерживает следующие встроенные переменные:
$http3- 
согласованный идентификатор протокола:
“
h3” для HTTP/3-соединений, “hq” для hq-соединений, либо пустая строка.