diff --git a/README.rst b/README.rst index 86ca5a6a..d7bc328c 100644 --- a/README.rst +++ b/README.rst @@ -841,7 +841,7 @@ information. Here is sample output from ``nghttpd``: nghttpx - proxy +++++++++++++++ -``nghttpx`` is a multi-threaded reverse proxy for HTTP/2, and +``nghttpx`` is a multi-threaded reverse proxy for HTTP/3, HTTP/2, and HTTP/1.1, and powers http://nghttp2.org and supports HTTP/2 server push. @@ -862,16 +862,16 @@ ticket keys among multiple ``nghttpx`` instances via memcached. ``nghttpx`` has 2 operation modes: -================== ================ ================ ============= -Mode option Frontend Backend Note -================== ================ ================ ============= -default mode HTTP/2, HTTP/1.1 HTTP/1.1, HTTP/2 Reverse proxy -``--http2-proxy`` HTTP/2, HTTP/1.1 HTTP/1.1, HTTP/2 Forward proxy -================== ================ ================ ============= +================== ======================== ================ ============= +Mode option Frontend Backend Note +================== ======================== ================ ============= +default mode HTTP/3, HTTP/2, HTTP/1.1 HTTP/1.1, HTTP/2 Reverse proxy +``--http2-proxy`` HTTP/3, HTTP/2, HTTP/1.1 HTTP/1.1, HTTP/2 Forward proxy +================== ======================== ================ ============= The interesting mode at the moment is the default mode. It works like -a reverse proxy and listens for HTTP/2, and HTTP/1.1 and can be -deployed as a SSL/TLS terminator for existing web server. +a reverse proxy and listens for HTTP/3, HTTP/2, and HTTP/1.1 and can +be deployed as a SSL/TLS terminator for existing web server. In all modes, the frontend connections are encrypted by SSL/TLS by default. To disable encryption, use the ``no-tls`` keyword in @@ -889,16 +889,16 @@ server: .. code-block:: text - Client <-- (HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/1.1, HTTP/2) --> Web Server - [reverse proxy] + Client <-- (HTTP/3, HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/1.1, HTTP/2) --> Web Server + [reverse proxy] With the ``--http2-proxy`` option, it works as forward proxy, and it is so called secure HTTP/2 proxy: .. code-block:: text - Client <-- (HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/1.1) --> Proxy - [secure proxy] (e.g., Squid, ATS) + Client <-- (HTTP/3, HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/1.1) --> Proxy + [secure proxy] (e.g., Squid, ATS) The ``Client`` in the above example needs to be configured to use ``nghttpx`` as secure proxy. @@ -930,7 +930,7 @@ proxy through an HTTP proxy: .. code-block:: text - Client <-- (HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/2) -- + Client <-- (HTTP/3, HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/2) -- --===================---> HTTP/2 Proxy (HTTP proxy tunnel) (e.g., nghttpx -s) @@ -938,8 +938,8 @@ proxy through an HTTP proxy: Benchmarking tool ----------------- -The ``h2load`` program is a benchmarking tool for HTTP/2. The UI of -``h2load`` is heavily inspired by ``weighttp`` +The ``h2load`` program is a benchmarking tool for HTTP/3, HTTP/2, and +HTTP/1.1. The UI of ``h2load`` is heavily inspired by ``weighttp`` (https://github.com/lighttpd/weighttp). The typical usage is as follows: diff --git a/doc/sources/nghttpx-howto.rst b/doc/sources/nghttpx-howto.rst index 27b4cc94..a0f2153b 100644 --- a/doc/sources/nghttpx-howto.rst +++ b/doc/sources/nghttpx-howto.rst @@ -14,8 +14,8 @@ Default mode If nghttpx is invoked without :option:`--http2-proxy`, it operates in default mode. In this mode, it works as reverse proxy (gateway) for -both HTTP/2 and HTTP/1 clients to backend servers. This is also known -as "HTTP/2 router". +both HTTP/3, HTTP/2 and HTTP/1 clients to backend servers. This is +also known as "HTTP/2 router". By default, frontend connection is encrypted using SSL/TLS. So server's private key and certificate must be supplied to the command @@ -28,6 +28,9 @@ the frontend, and an HTTP/1 connection can be upgraded to HTTP/2 using HTTP Upgrade. Starting HTTP/2 connection by sending HTTP/2 connection preface is also supported. +In order to receive HTTP/3 traffic, use ``quic`` parameter in +:option:`--frontend` option (.e.g, ``--frontend='*,443;quic'``) + nghttpx can listen on multiple frontend addresses. This is achieved by using multiple :option:`--frontend` options. For each frontend address, TLS can be enabled or disabled. @@ -509,6 +512,8 @@ Bootstrapping WebSockets with HTTP/2 for both frontend and backend connections. This feature is enabled by default and no configuration is required. +WebSockets over HTTP/3 is also supported. + HTTP/3 ------ diff --git a/src/shrpx.cc b/src/shrpx.cc index 1aa47dc4..5189ee7b 100644 --- a/src/shrpx.cc +++ b/src/shrpx.cc @@ -1965,7 +1965,7 @@ void print_version(std::ostream &out) { namespace { void print_usage(std::ostream &out) { out << R"(Usage: nghttpx [OPTIONS]... [ ] -A reverse proxy for HTTP/2, and HTTP/1.)" +A reverse proxy for HTTP/3, HTTP/2, and HTTP/1.)" << std::endl; } } // namespace