Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/quic.xml
1 views
1
<!--
2
Copyright (C) Nginx, Inc.
3
-->
4
5
<!DOCTYPE article SYSTEM "../../../dtd/article.dtd">
6
7
<article name="Поддержка QUIC и HTTP/3"
8
link="/ru/docs/quic.html"
9
lang="ru"
10
rev="3">
11
12
<section>
13
14
<para>
15
Поддержка протоколов
16
<link url="https://datatracker.ietf.org/doc/html/rfc9000">QUIC</link>
17
и
18
<link url="https://datatracker.ietf.org/doc/html/rfc9114">HTTP/3</link>
19
доступна начиная с версии 1.25.0, она включена в
20
<link doc="../linux_packages.xml">бинарных пакетах</link> для Linux.
21
Подробнее см. документацию к модулю
22
<link doc="http/ngx_http_v3_module.xml">ngx_http_v3_module</link>.
23
</para>
24
25
</section>
26
27
28
<section id="building" name="Сборка из исходных файлов">
29
30
<para>
31
Сборка настраивается командой <command>configure</command>.
32
Подробнее см. в статье <link doc="configure.xml"/>.
33
</para>
34
35
<para>
36
Для сборки nginx с поддержкой QUIC рекомендуется библиотека
37
<link url="https://openssl.org">OpenSSL</link> версии 3.5.1 или выше.
38
Иначе будет использоваться OpenSSL compatibility layer без поддержки TLS
39
<link doc="http/ngx_http_ssl_module.xml" id="ssl_early_data">early data</link>.
40
Также возможно использование предварительно собранной библиотеки
41
<link url="https://boringssl.googlesource.com/boringssl">BoringSSL</link>,
42
<link url="https://www.libressl.org">LibreSSL</link> или
43
<link url="https://github.com/quictls/openssl">QuicTLS</link>.
44
</para>
45
46
<para>
47
При конфигурации nginx с
48
<link url="https://boringssl.googlesource.com/boringssl">BoringSSL</link>
49
используется следующая команда:
50
<programlisting>
51
./configure
52
--with-debug
53
--with-http_v3_module
54
--with-cc-opt="-I../boringssl/include"
55
--with-ld-opt="-L../boringssl/build -lstdc++"
56
</programlisting>
57
</para>
58
59
<para>
60
Кроме того, можно сконфигурировать nginx с
61
<link url="https://github.com/quictls/openssl">QuicTLS</link>:
62
<programlisting>
63
./configure
64
--with-debug
65
--with-http_v3_module
66
--with-cc-opt="-I../quictls/build/include"
67
--with-ld-opt="-L../quictls/build/lib"
68
</programlisting>
69
</para>
70
71
<para>
72
Кроме того, можно сконфигурировать nginx с
73
<link url="https://www.libressl.org">LibreSSL</link>:
74
<programlisting>
75
./configure
76
--with-debug
77
--with-http_v3_module
78
--with-cc-opt="-I../libressl/build/include"
79
--with-ld-opt="-L../libressl/build/lib"
80
</programlisting>
81
</para>
82
83
<para>
84
После конфигурации
85
nginx компилируется и устанавливается с помощью
86
<command>make</command>.
87
</para>
88
89
</section>
90
91
92
<section id="configuration" name="Советы по настройке">
93
94
<para>
95
В директиве <link doc="http/ngx_http_core_module.xml" id="listen"/>
96
модуля <link doc="http/ngx_http_core_module.xml">ngx_http_core_module</link>
97
появился новый параметр
98
<link doc="http/ngx_http_core_module.xml" id="quic">quic</link>,
99
который позволяет принимать на указанном порту QUIC-соединения.
100
</para>
101
102
<para>
103
Вместе с параметром <literal>quic</literal>
104
можно также указать параметр
105
<link doc="http/ngx_http_core_module.xml" id="reuseport">reuseport</link>
106
для правильной работы с несколькими рабочими процессами.
107
</para>
108
109
<para>
110
Чтобы <link doc="http/ngx_http_v3_module.xml" id="quic_retry">разрешить</link>
111
проверку адреса:
112
<programlisting>
113
quic_retry on;
114
</programlisting>
115
116
Чтобы <link doc="http/ngx_http_ssl_module.xml" id="ssl_early_data">разрешить</link>
117
0-RTT:
118
<programlisting>
119
ssl_early_data on;
120
</programlisting>
121
122
Чтобы <link doc="http/ngx_http_v3_module.xml" id="quic_gso">разрешить</link>
123
GSO (Generic Segmentation Offloading):
124
<programlisting>
125
quic_gso on;
126
</programlisting>
127
128
Чтобы <link doc="http/ngx_http_v3_module.xml" id="quic_host_key">установить</link>
129
host-ключ для различных токенов:
130
<programlisting>
131
quic_host_key &lt;filename&gt;;
132
</programlisting>
133
</para>
134
135
<para>
136
Для работы QUIC требуется версия протокла TLSv1.3, которая включена по умолчанию
137
в директиве <link doc="http/ngx_http_ssl_module.xml" id="ssl_protocols"/>.
138
</para>
139
140
<para>
141
По умолчанию
142
<link url="http://vger.kernel.org/lpc_net2018_talks/willemdebruijn-lpc2018-udpgso-paper-DRAFT-1.pdf">GSO Linux-specific optimization</link>
143
выключена.
144
Включите, если настроен соответствующий сетевой интерфейс,
145
поддерживающий GSO.
146
</para>
147
148
</section>
149
150
151
<section id="troubleshooting " name="Устранение неполадок">
152
153
<para>
154
Приблизительные шаги при обнаружении проблемы:
155
<list type="bullet">
156
157
<listitem>
158
Убедитесь, что nginx собран с правильной SSL-библиотекой.
159
</listitem>
160
161
<listitem>
162
Убедитесь, что nginx использует правильную SSL-библиотеку в runtime
163
(<literal>nginx -V</literal> покажет что именно используется в данный момент).
164
</listitem>
165
166
<listitem>
167
Убедитесь, что клиент действительно присылает запросы через QUIC.
168
Рекомендуется начать с простого консольного клиента, например
169
<link url="https://nghttp2.org/ngtcp2">ngtcp2</link>,
170
чтобы убедиться, что сервер настроен правильно, и затем попробовать
171
в браузерах, так как браузеры могут быть требовательны к сертификатам.
172
</listitem>
173
174
<listitem>
175
Соберите nginx с поддержкой <link doc="debugging_log.xml">отладочного лога</link>
176
и проверьте отладочный лог.
177
В нём должны содержаться все детали соединения и причины ошибок.
178
Соответствующие сообщения начинаются с префикса “<literal>quic</literal>
179
и могут быть по нему отфильтрованы.
180
</listitem>
181
182
<listitem>
183
Для детального исследования можно включить дополнительную отладку
184
при помощи следующих макросов:
185
<literal>NGX_QUIC_DEBUG_PACKETS</literal>,
186
<literal>NGX_QUIC_DEBUG_FRAMES</literal>,
187
<literal>NGX_QUIC_DEBUG_ALLOC</literal>,
188
<literal>NGX_QUIC_DEBUG_CRYPTO</literal>.
189
190
<para>
191
<programlisting>
192
./configure
193
--with-http_v3_module
194
--with-debug
195
--with-cc-opt="-DNGX_QUIC_DEBUG_PACKETS -DNGX_QUIC_DEBUG_CRYPTO"
196
</programlisting>
197
</para>
198
199
</listitem>
200
201
</list>
202
</para>
203
204
</section>
205
206
</article>
207
208