HTTP/3#
Обеспечивает поддержку протокола HTTP/3 для соединений с клиентами, а также для соединений с проксируемыми серверами, настраиваемых при помощи следующих директив из модуля Proxy:
При сборке из исходного кода модуль не собирается по умолчанию; его необходимо
включить с помощью параметра сборки
Важно Чтобы принимать HTTP/3-соединения по TLS, необходимо наличие поддержки протокола TLSv1.3, появившейся в OpenSSL версии 1.1.1. Разрешает согласование протокола HTTP/3. Разрешает согласование протокола HTTP/0.9, используемого в функциональных тестах QUIC. По умолчанию http, server Инициализирует настройки HTTP/3 и QUIC,
а также задает максимальное число параллельных HTTP/3-потоков в соединении. Значение по умолчанию http, server Определяет емкость динамической таблицы
для серверных соединений. Примечание Похожая директива proxy_http3_max_table_capacity
задает это значение для прокси-соединений.
Чтобы избежать ошибок, использование динамической таблицы
отключается при включенном кэшировании в режиме проксирования. По умолчанию http, server Задает размер буфера,
используемого для чтения и записи QUIC-потоков. По умолчанию http, server Устанавливает значение транспортного параметра QUIC active_connection_id_limit. Это максимальное значение ID соединений, возможное для хранения на сервере. Разрешает маршрутизацию пакетов QUIC при помощи eBPF. Если маршрутизация включена, то обеспечивается поддержка миграции QUIC-соединений. Важно Директива поддерживается только на Linux 5.7+. Разрешает отправку оптимизированного пакетного режима при помощи segmentation offloading. Важно Оптимизированная отправка поддерживается только на Linux с поддержкой UDP_SEGMENT. Задает файл с секретным ключом, применяемым при шифровании stateless reset и address validation токенов. По умолчанию создается случайный ключ при каждой перезагрузке. Токены, созданные при помощи старых ключей, не принимаются. Разрешает функциональность QUIC Address Validation, в том числе отправку нового токена в Retry-пакете или NEW_TOKEN frame и валидацию токена, полученного в Initial-пакете. Модуль http_v3 поддерживает следующие встроенные переменные: согласованный идентификатор протокола: для HTTP/3-соединений для hq-соединений пустая строка для остальных случаев порядковый номер QUIC-соединения‑‑with‑http_v3_module
.
В пакетах и образах из
наших репозиториев
модуль включен в сборку.Пример конфигурации#
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_hq#
http3_max_concurrent_streams#
http3_max_concurrent_streams
число;http3_max_concurrent_streams 128;
http3_max_table_capacity#
http3_max_table_capacity
число;http3_max_table_capacity 4096;
http3_stream_buffer_size#
http3_stream_buffer_size
размер;http3_stream_buffer_size 64k;
quic_active_connection_id_limit#
quic_active_connection_id_limit
число;quic_active_connection_id_limit 2;
quic_bpf#
quic_gso#
quic_host_key#
quic_retry#
Встроенные переменные#
$http3
#h3
hq
""
$quic_connection
#