xml/en/docs/configure.xml                 |    4 +-
 xml/en/docs/http/ngx_http_core_module.xml |    4 +-
 xml/en/docs/http/ngx_http_v3_module.xml   |   97 +-----------
 xml/en/docs/quic.xml                      |  248 +++++------------------------
 xml/ru/GNUmakefile                        |    1 +
 xml/ru/docs/configure.xml                 |    4 +-
 xml/ru/docs/http/ngx_http_core_module.xml |    4 +-
 xml/ru/docs/http/ngx_http_v3_module.xml   |   96 +-----------
 xml/ru/docs/index.xml                     |    2 +-
 xml/ru/docs/quic.xml                      |  252 ++++++++++++++++++++++++++++++
 10 files changed, 310 insertions(+), 402 deletions(-)


# HG changeset patch
# User Yaroslav Zhuravlev <y...@nginx.com>
# Date 1684852637 -3600
#      Tue May 23 15:37:17 2023 +0100
# Node ID 9015546a429e45497c7d189e0f3a77423254e019
# Parent  c7bf5c9a1174695b7505b8d1b7a94fe6abff318f
Updated QUIC documentation after QUIC code merge.

- removed http3_max_concurrent_pushes, http3_push
http3_push_preload, quic_mtu
- updated apperared-in version
- update of quic.xml, adding Rus translation

diff --git a/xml/en/docs/configure.xml b/xml/en/docs/configure.xml
--- a/xml/en/docs/configure.xml
+++ b/xml/en/docs/configure.xml
@@ -8,7 +8,7 @@
 <article name="Building nginx from Sources"
          link="/en/docs/configure.html"
          lang="en"
-         rev="20">
+         rev="21">
 
 <section>
 
@@ -238,7 +238,7 @@
 This module is not built by default.
 </tag-desc>
 
-<tag-name>
+<tag-name id="http_v3_module">
 <literal>--with-http_v3_module</literal>
 </tag-name>
 <tag-desc>
diff --git a/xml/en/docs/http/ngx_http_core_module.xml b/xml/en/docs/http/ngx_http_core_module.xml
--- a/xml/en/docs/http/ngx_http_core_module.xml
+++ b/xml/en/docs/http/ngx_http_core_module.xml
@@ -10,7 +10,7 @@
 <module name="Module ngx_http_core_module"
         link="/en/docs/http/ngx_http_core_module.html"
         lang="en"
-        rev="103">
+        rev="104">
 
 <section id="directives" name="Directives">
 
@@ -1390,7 +1390,7 @@
 </para>
 
 <para id="quic">
-The <literal>quic</literal> parameter (1.23.4) configures the port to accept
+The <literal>quic</literal> parameter (1.25.0) configures the port to accept
 <link doc="ngx_http_v3_module.xml">QUIC</link> connections.
 </para>
 
diff --git a/xml/en/docs/http/ngx_http_v3_module.xml b/xml/en/docs/http/ngx_http_v3_module.xml
--- a/xml/en/docs/http/ngx_http_v3_module.xml
+++ b/xml/en/docs/http/ngx_http_v3_module.xml
@@ -9,19 +9,19 @@
 <module name="Module ngx_http_v3_module"
         link="/en/docs/http/ngx_http_v3_module.html"
         lang="en"
-        rev="1">
+        rev="2">
 
 <section id="summary">
 
 <para>
-The <literal>ngx_http_v3_module</literal> module (1.23.4) provides
+The <literal>ngx_http_v3_module</literal> module (1.25.0) provides
 experimental support for
 <link url="https://datatracker.ietf.org/doc/html/rfc9114";>HTTP/3</link>.
 </para>
 
 <para>
 This module is not built by default, it should be enabled with the
-<link doc="../configure.xml"><literal>--with-http_v3_module</literal></link>
+<link doc="../configure.xml" id="http_v3_module"><literal>--with-http_v3_module</literal></link>
 configuration parameter.
 <note>
 An SSL library that provides QUIC support
@@ -37,18 +37,6 @@
 </note>
 </para>
 
-
-<para>
-<note>
-The module is available as
-<literal>nginx-quic</literal> in
-<link doc="../quic.xml" id="linux">prebult Linux packages</link>.
-The module is also available as part of our
-<commercial_version>commercial subscription</commercial_version>
-in a separate <literal>nginx-plus-quic</literal> package.
-</note>
-</para>
-
 </section>
 
 
@@ -129,20 +117,6 @@
 </directive>
 
 
-<directive name="http3_max_concurrent_pushes">
-<syntax><value>number</value></syntax>
-<default>10</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Limits the maximum number of concurrent
-<link id="http3_push">push</link> requests in a connection.
-</para>
-
-</directive>
-
-
 <directive name="http3_max_concurrent_streams">
 <syntax><value>number</value></syntax>
 <default>128</default>
@@ -157,56 +131,6 @@
 </directive>
 
 
-<directive name="http3_push">
-<syntax><value>uri</value> | <literal>off</literal></syntax>
-<default>off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Pre-emptively sends
-(<link url="https://datatracker.ietf.org/doc/html/rfc9114#name-server-push";>pushes</link>)
-a request to the specified <value>uri</value>
-along with the response to the original request.
-Only relative URIs with absolute path will be processed,
-for example:
-<example>
-http3_push /static/css/main.css;
-</example>
-The <value>uri</value> value can contain variables.
-</para>
-
-<para>
-Several <literal>http3_push</literal> directives
-can be specified on the same configuration level.
-The <literal>off</literal> parameter cancels the effect
-of the <literal>http3_push</literal> directives
-inherited from the previous configuration level.
-</para>
-
-</directive>
-
-
-<directive name="http3_push_preload">
-<syntax><literal>on</literal> | <literal>off</literal></syntax>
-<default>off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables automatic conversion of
-<link url="https://www.w3.org/TR/preload/#server-push-http-3";>preload
-links</link>
-specified in the <header>Link</header> response header fields into
-<link url="https://datatracker.ietf.org/doc/html/rfc9114#name-server-push";>push</link>
-requests.
-</para>
-
-</directive>
-
-
 <directive name="http3_stream_buffer_size">
 <syntax><value>size</value></syntax>
 <default>64k</default>
@@ -294,21 +218,6 @@
 </directive>
 
 
-<directive name="quic_mtu">
-<syntax><value>size</value></syntax>
-<default>65527</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Sets the
-QUIC <literal>max_udp_payload_size</literal> transport parameter value.
-This is the maximum UDP payload possible to receive.
-</para>
-
-</directive>
-
-
 <directive name="quic_retry">
 <syntax><literal>on</literal> | <literal>off</literal></syntax>
 <default>off</default>
diff --git a/xml/en/docs/quic.xml b/xml/en/docs/quic.xml
--- a/xml/en/docs/quic.xml
+++ b/xml/en/docs/quic.xml
@@ -7,20 +7,16 @@
 <article name="Support for QUIC and HTTP/3"
          link="/en/docs/quic.html"
          lang="en"
-         rev="1">
+         rev="2">
 
 <section>
 
 <para>
+Support for
 <link url="https://datatracker.ietf.org/doc/html/rfc9000";>QUIC</link>
 and
 <link url="https://datatracker.ietf.org/doc/html/rfc9114";>HTTP/3</link>
-protocols are supported since 1.23.4 and are available
-as a separate <literal>nginx-quic</literal>
-<link id="linux">prebult Linux package</link>
-or as part of our
-<commercial_version>commercial subscription</commercial_version>
-in a separate <literal>nginx-plus-http3</literal> package.
+protocols is available since 1.25.0.
 </para>
 
 <para>
@@ -32,144 +28,6 @@
 </section>
 
 
-<section id="linux" name="Installation on Linux">
-
-<para>
-For Linux, <literal>nginx-quic</literal> packages
-from nginx.org can be used.
-The packages
-are available for the following Linux distributions and
-versions:
-<list type="bullet">
-
-<listitem>
-<link id="rhel">RHEL 9 and derivatives</link>: amd64, arm64
-</listitem>
-
-<listitem>
-<link id="rhel">Ubuntu 22.04</link>: amd64, arm64
-</listitem>
-
-</list>
-</para>
-
-<para>
-The <literal>nginx-quic</literal> packages are dynamically linked with the
-<link url="https://github.com/quictls/openssl";>QuicTLS</link> library.
-It will be installed as a runtime dependency
-alongside system-wide OpenSSL packages.
-QuicTLS differs from operating system-provided OpenSSL package in the following:
-<list type="bullet">
-
-<listitem>
-does not follow system-wide crypto policies
-</listitem>
-
-<listitem>
-does not have distribution-specific patches applied
-</listitem>
-
-<listitem>
-uses configuration from <literal>/etc/pki/quictls</literal> (RHEL9)
-or <literal>/etc/quictls</literal> (Ubuntu 22.04)
-</listitem>
-
-</list>
-</para>
-
-<para>
-The <literal>nginx-quic</literal> packages
-cannot be installed alongside nginx or nginx-plus packages.
-</para>
-
-<para>
-Please back up your configuration files
-before installing <literal>nginx-quic</literal>:
-<programlisting>
-sudo cp -a /etc/nginx /etc/nginx-quic-backup
-</programlisting>
-</para>
-
-
-<section name="RHEL" id="rhel">
-
-<para>
-The <literal>nginx-quic</literal> package can be installed on
-Red Hat Enterprise Linux and its derivatives such as
-CentOS, Oracle Linux, Rocky Linux, AlmaLinux.
-</para>
-
-<para>
-Install the prerequisites:
-<programlisting>
-sudo dnf install yum-utils
-</programlisting>
-
-To set up the yum repository, create the file named
-<path>/etc/yum.repos.d/nginx-quic.repo </path>
-with the following contents:
-
-<programlisting>
-[nginx-quic]
-name=nginx-quic repo
-baseurl=https://packages.nginx.org/nginx-quic/rhel/9/$basearch/
-gpgcheck=1
-enabled=1
-gpgkey=https://nginx.org/keys/nginx_signing.key
-</programlisting>
-
-To install nginx-quic, run the following commands:
-<programlisting>
-sudo dnf install nginx-quic
-</programlisting>
-
-When prompted to accept the GPG key, verify that the fingerprint matches
-<command>573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62</command>,
-and if so, accept it.
-</para>
-
-</section>
-
-
-<section name="Ubuntu" id="ubuntu">
-
-<para>
-Install the prerequisites:
-<programlisting>
-sudo apt update &amp;&amp; sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
-</programlisting>
-</para>
-
-<para>
-Import an official nginx signing key so apt could verify the packages
-authenticity.
-Fetch the key:
-<programlisting>
-curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
-    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
-</programlisting>
-
-To set up the apt repository for nginx-quic packages, run the following command:
-<programlisting>
-echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
-            https://packages.nginx.org/nginx-quic/ubuntu `lsb_release -cs` nginx-quic" \
-            | sudo tee /etc/apt/sources.list.d/nginx-quic.list
-</programlisting>
-</para>
-
-<para>
-To install nginx-quic, run the following commands:
-<programlisting>
-sudo apt update
-sudo apt install nginx-quic
-</programlisting>
-</para>
-
-</section>
-
-</section>
-
-
 <section id="building" name="Building from sources">
 
 <para>
@@ -178,19 +36,9 @@
 </para>
 
 <para>
-When configuring nginx, it is possible to enable QUIC and HTTP/3
-using the following configuration options:
-
-<list type="tag">
-
-<tag-name>
-<literal>--with-http_v3_module</literal><br/>
-</tag-name>
-<tag-desc>
-enables QUIC and HTTP/3.
-</tag-desc>
-
-</list>
+When configuring nginx, it is possible to enable QUIC and HTTP/3 using the
+<link doc="configure.xml" id="http_v3_module"><literal>--with-http_v3_module</literal></link>
+configuration parameter.
 </para>
 
 <para>
@@ -207,10 +55,12 @@
 Use the following command to configure nginx with
 <link url="https://boringssl.googlesource.com/boringssl";>BoringSSL</link>:
 <programlisting>
-./auto/configure --with-debug --with-http_v3_module         \
-                 --with-cc-opt="-I../boringssl/include"     \
-                 --with-ld-opt="-L../boringssl/build/ssl    \
-                                -L../boringssl/build/crypto"
+./configure
+    --with-debug
+    --with-http_v3_module
+    --with-cc-opt="-I../boringssl/include"
+    --with-ld-opt="-L../boringssl/build/ssl
+                   -L../boringssl/build/crypto"
 </programlisting>
 </para>
 
@@ -218,9 +68,11 @@
 Alternatively, nginx can be configured with
 <link url="https://github.com/quictls/openssl";>QuicTLS</link>:
 <programlisting>
-./auto/configure --with-debug --with-http_v3_module         \
-                 --with-cc-opt="-I../quictls/build/include" \
-                 --with-ld-opt="-L../quictls/build/lib"
+./configure
+    --with-debug
+    --with-http_v3_module
+    --with-cc-opt="-I../quictls/build/include"
+    --with-ld-opt="-L../quictls/build/lib"
 </programlisting>
 </para>
 
@@ -228,9 +80,11 @@
 Alternatively, nginx can be configured with a modern version of
 <link url="https://www.libressl.org";>LibreSSL</link>:
 <programlisting>
-./auto/configure --with-debug --with-http_v3_module          \
-                 --with-cc-opt="-I../libressl/build/include" \
-                 --with-ld-opt="-L../libressl/build/lib"
+./configure
+    --with-debug
+    --with-http_v3_module
+    --with-cc-opt="-I../libressl/build/include"
+    --with-ld-opt="-L../libressl/build/lib"
 </programlisting>
 </para>
 
@@ -260,6 +114,11 @@
 </para>
 
 <para>
+For the list of directives, see
+<link doc="http/ngx_http_v3_module.xml">ngx_http_v3_module</link>.
+</para>
+
+<para>
 To <link doc="http/ngx_http_v3_module.xml" id="quic_retry">enable</link>
 address validation:
 <programlisting>
@@ -278,18 +137,11 @@
 quic_gso on;
 </programlisting>
 
-To <link doc="http/ngx_http_v3_module.xml" id="quic_mtu">limit</link>
-maximum UDP payload size on receive path:
-<programlisting>
-quic_mtu &lt;size&gt;;
-</programlisting>
-
 To <link doc="http/ngx_http_v3_module.xml" id="quic_host_key">set</link>
 host key for various tokens:
 <programlisting>
 quic_host_key &lt;filename&gt;;
 </programlisting>
-
 </para>
 
 <para>
@@ -329,7 +181,7 @@
         ssl_certificate_key certs/example.com.key;
 
         location / {
-            # required for browsers to direct them into quic port
+            # required for browsers to direct them to quic port
             add_header Alt-Svc 'h3=":8443"; ma=86400';
         }
     }
@@ -340,17 +192,6 @@
 </section>
 
 
-<section id="directives" name="Directives">
-
-<para>
-For the list of directives, please refer to
-<link doc="http/ngx_http_v3_module.xml">ngx_http_v3_module</link>
-module documentation.
-</para>
-
-</section>
-
-
 <section id="troubleshooting " name="Troubleshooting">
 
 <para>
@@ -358,7 +199,7 @@
 <list type="bullet">
 
 <listitem>
-Ensure nginx is built with the proper SSL library that supports QUIC.
+Ensure nginx is built with the proper SSL library.
 </listitem>
 
 <listitem>
@@ -368,7 +209,7 @@
 
 <listitem>
 Ensure a client is actually sending requests over QUIC.
-We recommend starting with a simple console client such as
+It is recommended to start with a simple console client such as
 <link url="https://nghttp2.org/ngtcp2";>ngtcp2</link>
 to ensure the server is configured properly before trying
 with real browsers that may be quite picky with certificates.
@@ -383,16 +224,20 @@
 </listitem>
 
 <listitem>
-For a deeper investigation, please enable additional debugging in
-<literal>src/event/quic/ngx_event_quic_connection.h</literal>:
+For a deeper investigation, additional debugging can be enabled
+using the following macros:
+<literal>NGX_QUIC_DEBUG_PACKETS</literal>,
+<literal>NGX_QUIC_DEBUG_FRAMES</literal>,
+<literal>NGX_QUIC_DEBUG_ALLOC</literal>,
+<literal>NGX_QUIC_DEBUG_CRYPTO</literal>.
 
 <para>
-<example>
-#define NGX_QUIC_DEBUG_PACKETS
-#define NGX_QUIC_DEBUG_FRAMES
-#define NGX_QUIC_DEBUG_ALLOC
-#define NGX_QUIC_DEBUG_CRYPTO
-</example>
+<programlisting>
+./configure
+    --with-http_v3_module
+    --with-debug
+    --with-cc-opt="-DNGX_QUIC_DEBUG_PACKETS -DNGX_QUIC_DEBUG_CRYPTO"
+</programlisting>
 </para>
 </listitem>
 
@@ -401,13 +246,4 @@
 
 </section>
 
-
-<section id="contributing" name="Contributing">
-
-<para>
-Please refer to <link doc="contributing_changes.xml"/>.
-</para>
-
-</section>
-
 </article>
diff --git a/xml/ru/GNUmakefile b/xml/ru/GNUmakefile
--- a/xml/ru/GNUmakefile
+++ b/xml/ru/GNUmakefile
@@ -19,6 +19,7 @@
 		contributing_changes					\
 		beginners_guide						\
 		configure						\
+		quic							\
 
 FAQ =									\
 		sys_errlist						\
diff --git a/xml/ru/docs/configure.xml b/xml/ru/docs/configure.xml
--- a/xml/ru/docs/configure.xml
+++ b/xml/ru/docs/configure.xml
@@ -8,7 +8,7 @@
 <article name="Сборка nginx из исходных файлов"
          link="/ru/docs/configure.html"
          lang="ru"
-         rev="20">
+         rev="21">
 
 <section>
 
@@ -236,7 +236,7 @@
 По умолчанию модуль не собирается.
 </tag-desc>
 
-<tag-name>
+<tag-name id="http_v3_module">
 <literal>--with-http_v3_module</literal>
 </tag-name>
 <tag-desc>
diff --git a/xml/ru/docs/http/ngx_http_core_module.xml b/xml/ru/docs/http/ngx_http_core_module.xml
--- a/xml/ru/docs/http/ngx_http_core_module.xml
+++ b/xml/ru/docs/http/ngx_http_core_module.xml
@@ -10,7 +10,7 @@
 <module name="Модуль ngx_http_core_module"
         link="/ru/docs/http/ngx_http_core_module.html"
         lang="ru"
-        rev="103">
+        rev="104">
 
 <section id="directives" name="Директивы">
 
@@ -1382,7 +1382,7 @@
 </para>
 
 <para id="quic">
-Параметр <literal>quic</literal> (1.23.4) позволяет принимать на этом порту
+Параметр <literal>quic</literal> (1.25.0) позволяет принимать на этом порту
 <link doc="ngx_http_v3_module.xml">QUIC</link>-соединения.
 </para>
 
diff --git a/xml/ru/docs/http/ngx_http_v3_module.xml b/xml/ru/docs/http/ngx_http_v3_module.xml
--- a/xml/ru/docs/http/ngx_http_v3_module.xml
+++ b/xml/ru/docs/http/ngx_http_v3_module.xml
@@ -9,12 +9,12 @@
 <module name="Модуль ngx_http_v3_module"
         link="/ru/docs/http/ngx_http_v3_module.html"
         lang="en"
-        rev="1">
+        rev="2">
 
 <section id="summary">
 
 <para>
-Модуль <literal>ngx_http_v3_module</literal> (1.23.4) обеспечивает
+Модуль <literal>ngx_http_v3_module</literal> (1.25.0) обеспечивает
 экспериментальную поддержку
 <link url="https://datatracker.ietf.org/doc/html/rfc9114";>HTTP/3</link>.
 </para>
@@ -22,7 +22,7 @@
 <para>
 По умолчанию этот модуль не собирается, его сборку необходимо
 разрешить с помощью конфигурационного параметра
-<link doc="../configure.xml"><literal>--with-http_v3_module</literal></link>.
+<link doc="../configure.xml" id="http_v3_module"><literal>--with-http_v3_module</literal></link>.
 <note>
 Для сборки и работы этого модуля рекомендуется использовать
 библиотеку SSL с поддержкой QUIC, например
@@ -37,18 +37,6 @@
 </note>
 </para>
 
-<para>
-<note>
-Модуль доступен в виде
-<link doc="../quic.xml" id="linux">готовых пакетов</link>
-<literal>nginx-quic</literal> для Linux.
-Модуль также доступен как часть
-<commercial_version>коммерческой подписки</commercial_version>
-в виде отдельного пакета <literal>nginx-plus-quic</literal>.
-
-</note>
-</para>
-
 </section>
 
 
@@ -129,20 +117,6 @@
 </directive>
 
 
-<directive name="http3_max_concurrent_pushes">
-<syntax><value>число</value></syntax>
-<default>10</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Ограничивает максимальное число параллельных
-<link id="http3_push">push</link>-запросов в соединении.
-</para>
-
-</directive>
-
-
 <directive name="http3_max_concurrent_streams">
 <syntax><value>число</value></syntax>
 <default>128</default>
@@ -157,55 +131,6 @@
 </directive>
 
 
-<directive name="http3_push">
-<syntax><value>uri</value> | <literal>off</literal></syntax>
-<default>off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Заблаговременно отправляет
-(<link url="https://datatracker.ietf.org/doc/html/rfc9114#name-server-push";>push</link>) запрос
-к заданному <value>uri</value>
-вместе с ответом на оригинальный запрос.
-Будут обработаны только относительные URI с абсолютными путями,
-например:
-<example>
-http3_push /static/css/main.css;
-</example>
-В значении <value>uri</value> допустимо использование переменных.
-</para>
-
-<para>
-На одном уровне конфигурации можно указать несколько
-<literal>http3_push</literal> директив.
-Параметр <literal>off</literal> отменяет действие
-унаследованных с предыдущего уровня конфигурации
-директив <literal>http3_push</literal>.
-</para>
-
-</directive>
-
-
-<directive name="http3_push_preload">
-<syntax><literal>on</literal> | <literal>off</literal></syntax>
-<default>off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Разрешает автоматическое преобразование
-<link url="https://www.w3.org/TR/preload/#server-push-http-3";>preload
-links</link>,
-указанных в полях <header>Link</header> заголовка ответа, в
-<link url="https://datatracker.ietf.org/doc/html/rfc9114#name-server-push";>push</link>-запросы.
-</para>
-
-</directive>
-
-
 <directive name="http3_stream_buffer_size">
 <syntax><value>размер</value></syntax>
 <default>64k</default>
@@ -293,21 +218,6 @@
 </directive>
 
 
-<directive name="quic_mtu">
-<syntax><value>размер</value></syntax>
-<default>65527</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Устанавливает
-значение транспортного параметра QUIC <literal>max_udp_payload_size</literal>.
-Это максимально возможное значение для получения UDP payload.
-</para>
-
-</directive>
-
-
 <directive name="quic_retry">
 <syntax><literal>on</literal> | <literal>off</literal></syntax>
 <default>off</default>
diff --git a/xml/ru/docs/index.xml b/xml/ru/docs/index.xml
--- a/xml/ru/docs/index.xml
+++ b/xml/ru/docs/index.xml
@@ -66,7 +66,7 @@
 </listitem>
 
 <listitem>
-<link doc="../../en/docs/quic.xml">Поддержка QUIC и HTTP/3</link> [en]
+<link doc="quic.xml"/>
 </listitem>
 
 </list>
diff --git a/xml/ru/docs/quic.xml b/xml/ru/docs/quic.xml
new file mode 100644
--- /dev/null
+++ b/xml/ru/docs/quic.xml
@@ -0,0 +1,252 @@
+<!--
+  Copyright (C) Nginx, Inc.
+  -->
+
+<!DOCTYPE article SYSTEM "../../../dtd/article.dtd">
+
+<article name="Поддержка QUIC и HTTP/3"
+         link="/ru/docs/quic.html"
+         lang="ru"
+         rev="2">
+
+<section>
+
+<para>
+Поддержка протоколов
+<link url="https://datatracker.ietf.org/doc/html/rfc9000";>QUIC</link>
+и
+<link url="https://datatracker.ietf.org/doc/html/rfc9114";>HTTP/3</link>
+доступна начиная с версии 1.25.0.
+</para>
+
+<para>
+<note>
+Поддержка QUIC и HTTP/3 экспериментальная, поэтому возможно всё.
+</note>
+</para>
+
+</section>
+
+
+<section id="building" name="Сборка из исходных файлов">
+
+<para>
+Сборка настраивается командой <command>configure</command>.
+Подробнее см. в статье <link doc="configure.xml"/>.
+</para>
+
+<para>
+Во время сборки nginx можно включить QUIC и HTTP/3
+при помощи конфигурационного параметра
+<link doc="configure.xml" id="http_v3_module"><literal>--with-http_v3_module</literal></link>.
+</para>
+
+<para>
+Для сборки nginx рекомендуется библиотека SSL с поддержкой QUIC, например
+<link url="https://boringssl.googlesource.com/boringssl";>BoringSSL</link>,
+<link url="https://www.libressl.org";>LibreSSL</link> или
+<link url="https://github.com/quictls/openssl";>QuicTLS</link>.
+Иначе, при использовании библиотеки <link url="https://openssl.org";>OpenSSL</link>,
+будет использоваться OpenSSL compatibility layer, в котором не поддерживается
+<link doc="http/ngx_http_ssl_module.xml" id="ssl_early_data">early data</link>.
+</para>
+
+<para>
+При конфигурации nginx с
+<link url="https://boringssl.googlesource.com/boringssl";>BoringSSL</link>
+используется следующая команда:
+<programlisting>
+./configure
+    --with-debug
+    --with-http_v3_module
+    --with-cc-opt="-I../boringssl/include"
+    --with-ld-opt="-L../boringssl/build/ssl
+                   -L../boringssl/build/crypto"
+</programlisting>
+</para>
+
+<para>
+Кроме того, можно сконфигурировать nginx с
+<link url="https://github.com/quictls/openssl";>QuicTLS</link>:
+<programlisting>
+./configure
+    --with-debug
+    --with-http_v3_module
+    --with-cc-opt="-I../quictls/build/include"
+    --with-ld-opt="-L../quictls/build/lib"
+</programlisting>
+</para>
+
+<para>
+Кроме того, можно сконфигурировать nginx с современной версией
+<link url="https://www.libressl.org";>LibreSSL</link>:
+<programlisting>
+./configure
+    --with-debug
+    --with-http_v3_module
+    --with-cc-opt="-I../libressl/build/include"
+    --with-ld-opt="-L../libressl/build/lib"
+</programlisting>
+</para>
+
+<para>
+После конфигурации
+nginx компилируется и устанавливается с помощью
+<command>make</command>.
+</para>
+
+</section>
+
+
+<section id="configuration" name="Конфигурация">
+
+<para>
+В директиве <link doc="http/ngx_http_core_module.xml" id="listen"/>
+модуля <link doc="http/ngx_http_core_module.xml">ngx_http_core_module</link>
+появился новый параметр
+<link doc="http/ngx_http_core_module.xml" id="quic">quic</link>,
+который позволяет принимать на указанном порту QUIC-соединения.
+</para>
+
+<para>
+Вместе с параметром <literal>quic</literal>
+можно также указать параметр
+<link doc="http/ngx_http_core_module.xml" id="reuseport">reuseport</link>
+для правильной работы с несколькими рабочими процессами.
+</para>
+
+<para>
+Список директив см. в модуле
+<link doc="http/ngx_http_v3_module.xml">ngx_http_v3_module</link>.
+</para>
+
+<para>
+Чтобы <link doc="http/ngx_http_v3_module.xml" id="quic_retry">разрешить</link>
+проверку адреса:
+<programlisting>
+quic_retry on;
+</programlisting>
+
+Чтобы <link doc="http/ngx_http_ssl_module.xml" id="ssl_early_data">разрешить</link>
+0-RTT:
+<programlisting>
+ssl_early_data on;
+</programlisting>
+
+Чтобы <link doc="http/ngx_http_v3_module.xml" id="quic_gso">разрешить</link>
+GSO (Generic Segmentation Offloading):
+<programlisting>
+quic_gso on;
+</programlisting>
+
+Чтобы <link doc="http/ngx_http_v3_module.xml" id="quic_host_key">установить</link>
+host-ключ для различных токенов:
+<programlisting>
+quic_host_key &lt;filename&gt;;
+</programlisting>
+</para>
+
+<para>
+Для работы QUIC требуется версия протокла TLSv1.3, которая включена по умолчанию
+в директиве <link doc="http/ngx_http_ssl_module.xml" id="ssl_protocols"/>.
+</para>
+
+<para>
+По умолчанию
+<link url="http://vger.kernel.org/lpc_net2018_talks/willemdebruijn-lpc2018-udpgso-paper-DRAFT-1.pdf";>GSO Linux-specific optimization</link>
+выключена.
+Включите, если настроен соответствующий сетевой интерфейс,
+поддерживающий GSO.
+</para>
+
+</section>
+
+
+<section id="example" name="Пример конфигурации">
+
+<para>
+<example>
+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 {
+        # для лучшей совместимости рекомендуется
+        # использовать один порт для quic и https
+        listen 8443 quic reuseport;
+        listen 8443 ssl;
+
+        ssl_certificate     certs/example.com.crt;
+        ssl_certificate_key certs/example.com.key;
+
+        location / {
+            # для перенаправления браузеров в quic-порт
+            add_header Alt-Svc 'h3=":8443"; ma=86400';
+        }
+    }
+}
+</example>
+</para>
+
+</section>
+
+
+<section id="troubleshooting " name="Устранение неполадок">
+
+<para>
+Приблизительные шаги при обнаружении проблемы:
+<list type="bullet">
+
+<listitem>
+Убедитесь, что nginx собран с правильной SSL-библиотекой.
+</listitem>
+
+<listitem>
+Убедитесь, что nginx использует правильную SSL-библиотеку в runtime
+(<literal>nginx -V</literal> покажет что именно используется в данный момент).
+</listitem>
+
+<listitem>
+Убедитесь, что клиент действительно присылает запросы через QUIC.
+Рекомендуется начать с простого консольного клиента, например
+<link url="https://nghttp2.org/ngtcp2";>ngtcp2</link>,
+чтобы убедиться, что сервер настроен правильно, и затем попробовать
+в браузерах, так как браузеры могут быть требовательны к сертификатам.
+</listitem>
+
+<listitem>
+Соберите nginx с поддержкой <link doc="debugging_log.xml">отладочного лога</link>
+и проверьте отладочный лог.
+В нём должны содержаться все детали соединения и причины ошибок.
+Соответствующие сообщения начинаются с префикса “<literal>quic</literal>”
+и могут быть по нему отфильтрованы.
+</listitem>
+
+<listitem>
+Для детального исследования можно включить дополнительную отладку
+при помощи следующих макросов:
+<literal>NGX_QUIC_DEBUG_PACKETS</literal>,
+<literal>NGX_QUIC_DEBUG_FRAMES</literal>,
+<literal>NGX_QUIC_DEBUG_ALLOC</literal>,
+<literal>NGX_QUIC_DEBUG_CRYPTO</literal>.
+
+<para>
+<programlisting>
+./configure
+    --with-http_v3_module
+    --with-debug
+    --with-cc-opt="-DNGX_QUIC_DEBUG_PACKETS -DNGX_QUIC_DEBUG_CRYPTO"
+</programlisting>
+</para>
+
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+</article>
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-devel

Reply via email to