=encoding utf-8 =head1 NAME ngx_http_v3_module - Module ngx_http_v3_module =head1 The C module (1.25.0) provides experimental support for L3|https://datatracker.ietf.org/doc/html/rfc9114>. This module is not built by default, it should be enabled with the L|configure> configuration parameter. B An SSL library that provides QUIC support such as L, L, or L is recommended to build and run this module. Otherwise, when using the L library, OpenSSL compatibility layer will be used that does not support L. =head1 Known Issues The module is experimental, caveat emptor applies. =head1 Example Configuration 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 { # for better compatibility it's recommended # to use the same port for http/3 and https listen 8443 quic reuseport; listen 8443 ssl; ssl_certificate certs/example.com.crt; ssl_certificate_key certs/example.com.key; location / { # used to advertise the availability of HTTP/3 add_header Alt-Svc 'h3=":8443"; ma=86400'; } } } Note that accepting HTTPE3 connections over TLS requires the TLSv1.3 protocol support, which is available since L version 1.1.1. =head1 Directives =head2 http3 B http3 I E C> B I B I B I Enables L3|https://datatracker.ietf.org/doc/html/rfc9114> protocol negotiation. =head2 http3_hq B http3_hq I E C> B I B I B I Enables HTTPE0.9 protocol negotiation used in L. =head2 http3_max_concurrent_streams B http3_max_concurrent_streams I>> B I<128> B I B I Sets the maximum number of concurrent HTTPE3 request streams in a connection. =head2 http3_stream_buffer_size B http3_stream_buffer_size I>> B I<64k> B I B I Sets the size of the buffer used for reading and writing of the QUIC streams. =head2 quic_active_connection_id_limit B quic_active_connection_id_limit I>> B I<2> B I B I Sets the QUIC C transport parameter value. This is the maximum number of client connection IDs which can be stored on the server. =head2 quic_bpf B quic_bpf I E C> B I B I
Enables routing of QUIC packets using L. When enabled, this allows supporting QUIC connection migration. B The directive is only supported on Linux 5.7+. =head2 quic_gso B quic_gso I E C> B I B I B I Enables sending in optimized batch mode using segmentation offloading. B Optimized sending is supported only on Linux featuring C. =head2 quic_host_key B quic_host_key I>> B I B I Sets a I> with the secret key used to encrypt stateless reset and address validation tokens. By default, a random key is generated on each reload. Tokens generated with old keys are not accepted. =head2 quic_retry B quic_retry I E C> B I B I B I Enables the L feature. This includes sending a new token in a C packet or a C frame and validating a token received in the C packet. =head1 Embedded Variables The C module supports the following embedded variables: =over =item C<$http3> negotiated protocol identifier: “C

” for HTTPE3 connections, “C” for hq connections, or an empty string otherwise. =back