Модуль ngx_http_v3_module
Модуль ngx_http_v3_module
(1.25.0) обеспечивает
экспериментальную поддержку
HTTP/3.
По умолчанию этот модуль не собирается, его сборку необходимо
разрешить с помощью конфигурационного параметра
--with-http_v3_module
.
Для сборки и работы этого модуля рекомендуется использовать библиотеку SSL с поддержкой QUIC, например BoringSSL, LibreSSL, QuicTLS. Иначе, при использовании библиотеки OpenSSL, будет использоваться OpenSSL compatibility layer, в котором не поддерживается early data.
Известные проблемы
Модуль экспериментальный, поэтому возможно всё.
Пример конфигурации
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'; } } }
Чтобы принимать HTTP/3-соединения по TLS, необходимо наличие поддержки протокола TLSv1.3, появившейся в OpenSSL версии 1.1.1.
Директивы
Синтаксис: |
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-соединений, либо пустая строка.