README: updated building from sources, added directives reference.
This commit is contained in:
parent
b9ce6d5074
commit
a0bcb2042e
147
README
147
README
|
@ -51,7 +51,16 @@ Experimental QUIC support for nginx
|
||||||
+ Lost packets are detected and retransmitted properly
|
+ Lost packets are detected and retransmitted properly
|
||||||
+ Clients may migrate to new address
|
+ Clients may migrate to new address
|
||||||
|
|
||||||
2. Installing
|
2. Building from sources
|
||||||
|
|
||||||
|
The build is configured using the configure command.
|
||||||
|
Refer to http://nginx.org/en/docs/configure.html for details.
|
||||||
|
|
||||||
|
When configuring nginx, it's possible to enable QUIC and HTTP/3
|
||||||
|
using the following new configuration options:
|
||||||
|
|
||||||
|
--with-http_v3_module - enable QUIC and HTTP/3
|
||||||
|
--with-stream_quic_module - enable QUIC in Stream
|
||||||
|
|
||||||
A library that provides QUIC support is required to build nginx, there
|
A library that provides QUIC support is required to build nginx, there
|
||||||
are several of those available on the market:
|
are several of those available on the market:
|
||||||
|
@ -85,12 +94,6 @@ Experimental QUIC support for nginx
|
||||||
--with-cc-opt="-I../libressl/build/include" \
|
--with-cc-opt="-I../libressl/build/include" \
|
||||||
--with-ld-opt="-L../libressl/build/lib"
|
--with-ld-opt="-L../libressl/build/lib"
|
||||||
|
|
||||||
When configuring nginx, it's possible to enable QUIC and HTTP/3
|
|
||||||
using the following new configuration options:
|
|
||||||
|
|
||||||
--with-http_v3_module - enable QUIC and HTTP/3
|
|
||||||
--with-stream_quic_module - enable QUIC in Stream
|
|
||||||
|
|
||||||
3. Configuration
|
3. Configuration
|
||||||
|
|
||||||
The HTTP "listen" directive got a new option "http3" which enables
|
The HTTP "listen" directive got a new option "http3" which enables
|
||||||
|
@ -174,7 +177,129 @@ Example configuration:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
4. Clients
|
4. Directives
|
||||||
|
|
||||||
|
Syntax: quic_bpf on | off;
|
||||||
|
Default: quic_bpf off;
|
||||||
|
Context: main
|
||||||
|
|
||||||
|
Enables routing of QUIC packets using eBPF.
|
||||||
|
When enabled, this allows to support QUIC connection migration.
|
||||||
|
The directive is only supported on Linux 5.7+.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: quic_retry on | off;
|
||||||
|
Default: quic_retry off;
|
||||||
|
Context: http | stream, server
|
||||||
|
|
||||||
|
Enables the QUIC Address Validation feature. This includes:
|
||||||
|
- sending a new token in a Retry packet or a NEW_TOKEN frame
|
||||||
|
- validating a token received in the Initial packet
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: quic_gso on | off;
|
||||||
|
Default: quic_gso off;
|
||||||
|
Context: http | stream, server
|
||||||
|
|
||||||
|
Enables sending in optimized batch mode using segmentation offloading.
|
||||||
|
Optimized sending is only supported on Linux featuring UDP_SEGMENT.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: quic_mtu size;
|
||||||
|
Default: quic_mtu 65527;
|
||||||
|
Context: http | stream, server
|
||||||
|
|
||||||
|
Sets the QUIC max_udp_payload_size transport parameter value.
|
||||||
|
This is the maximum UDP payload that we are willing to receive.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: quic_host_key file;
|
||||||
|
Default: -
|
||||||
|
Context: http | stream, server
|
||||||
|
|
||||||
|
Specifies a file with the secret key used to encrypt stateless reset and
|
||||||
|
address validation tokens. By default, a randomly generated key is used.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: quic_active_connection_id_limit number;
|
||||||
|
Default: quic_active_connection_id_limit 2;
|
||||||
|
Context: http | stream, server
|
||||||
|
|
||||||
|
Sets the QUIC active_connection_id_limit transport parameter value.
|
||||||
|
This is the maximum number of connection IDs we are willing to store.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: quic_timeout time;
|
||||||
|
Default: quic_timeout 60s;
|
||||||
|
Context: stream, server
|
||||||
|
|
||||||
|
Defines a timeout used to negotiate the QUIC idle timeout.
|
||||||
|
In the http module, it is taken from the keepalive_timeout directive.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: quic_stream_buffer_size size;
|
||||||
|
Default: quic_stream_buffer_size 64k;
|
||||||
|
Context: stream, server
|
||||||
|
|
||||||
|
Syntax: http3_stream_buffer_size size;
|
||||||
|
Default: http3_stream_buffer_size 64k;
|
||||||
|
Context: http, server
|
||||||
|
|
||||||
|
Sets buffer size for reading and writing of the QUIC STREAM payload.
|
||||||
|
The buffer size is used to calculate initial flow control limits
|
||||||
|
in the following QUIC transport parameters:
|
||||||
|
- initial_max_data
|
||||||
|
- initial_max_stream_data_bidi_local
|
||||||
|
- initial_max_stream_data_bidi_remote
|
||||||
|
- initial_max_stream_data_uni
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: http3_max_concurrent_pushes number;
|
||||||
|
Default: http3_max_concurrent_pushes 10;
|
||||||
|
Context: http, server
|
||||||
|
|
||||||
|
Limits the maximum number of concurrent push requests in a connection.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: http3_max_concurrent_streams number;
|
||||||
|
Default: http3_max_concurrent_streams 128;
|
||||||
|
Context: http, server
|
||||||
|
|
||||||
|
Sets the maximum number of concurrent HTTP/3 streams in a connection.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: http3_push uri | off;
|
||||||
|
Default: http3_push off;
|
||||||
|
Context: http, server, location
|
||||||
|
|
||||||
|
Pre-emptively sends (pushes) a request to the specified uri along with
|
||||||
|
the response to the original request. Only relative URIs with absolute
|
||||||
|
path will be processed, for example:
|
||||||
|
|
||||||
|
http3_push /static/css/main.css;
|
||||||
|
|
||||||
|
The uri value can contain variables.
|
||||||
|
|
||||||
|
Several http3_push directives can be specified on the same configuration
|
||||||
|
level. The off parameter cancels the effect of the http3_push directives
|
||||||
|
inherited from the previous configuration level.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: http3_push_preload on | off;
|
||||||
|
Default: http3_push_preload off;
|
||||||
|
Context: http, server, location
|
||||||
|
|
||||||
|
Enables automatic conversion of preload links specified in the “Link”
|
||||||
|
response header fields into push requests.
|
||||||
|
|
||||||
|
|
||||||
|
Syntax: http3_hq on | off;
|
||||||
|
Default: http3_hq off;
|
||||||
|
Context: http, server
|
||||||
|
|
||||||
|
Enables HTTP/0.9 protocol negotiation used in QUIC interoperability tests.
|
||||||
|
|
||||||
|
5. Clients
|
||||||
|
|
||||||
* Browsers
|
* Browsers
|
||||||
|
|
||||||
|
@ -201,7 +326,7 @@ Example configuration:
|
||||||
"nghttp3/ngtcp2 client" "quic"
|
"nghttp3/ngtcp2 client" "quic"
|
||||||
|
|
||||||
|
|
||||||
5. Troubleshooting
|
6. Troubleshooting
|
||||||
|
|
||||||
Here are some tips that may help to identify problems:
|
Here are some tips that may help to identify problems:
|
||||||
|
|
||||||
|
@ -231,12 +356,12 @@ Example configuration:
|
||||||
#define NGX_QUIC_DEBUG_ALLOC
|
#define NGX_QUIC_DEBUG_ALLOC
|
||||||
#define NGX_QUIC_DEBUG_CRYPTO
|
#define NGX_QUIC_DEBUG_CRYPTO
|
||||||
|
|
||||||
6. Contributing
|
7. Contributing
|
||||||
|
|
||||||
Please refer to
|
Please refer to
|
||||||
http://nginx.org/en/docs/contributing_changes.html
|
http://nginx.org/en/docs/contributing_changes.html
|
||||||
|
|
||||||
7. Links
|
8. Links
|
||||||
|
|
||||||
[1] https://datatracker.ietf.org/doc/html/rfc9000
|
[1] https://datatracker.ietf.org/doc/html/rfc9000
|
||||||
[2] https://datatracker.ietf.org/doc/html/rfc9114
|
[2] https://datatracker.ietf.org/doc/html/rfc9114
|
||||||
|
|
Loading…
Reference in New Issue