Модуль ngx_http_v2_module
- Известные проблемы
- Пример конфигурации
- Директивы
- http2
- http2_body_preread_size
- http2_chunk_size
- http2_idle_timeout
- http2_max_concurrent_pushes
- http2_max_concurrent_streams
- http2_max_field_size
- http2_max_header_size
- http2_max_requests
- http2_push
- http2_push_preload
- http2_recv_buffer_size
- http2_recv_timeout
- Встроенные переменные
Модуль ngx_http_v2_module (1.9.5) обеспечивает поддержку HTTP/2.
Этот модуль не подключается по умолчанию, его необходимо включить с помощью параметра конфигурации --with-http_v2_module.
Известные проблемы
До версии 1.9.14, буферизация тела запроса клиента не могла быть отключена, независимо от значений директивы proxy_request_buffering, fastcgi_request_buffering, uwsgi_request_buffering и scgi_request_buffering.
До версии 1.19.1 механизм lingering_close не использовался для управления закрытием подключений HTTP/2.
Пример конфигурации
server {
listen 443 ssl;
http2 on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
}
Обратите внимание, что для приема подключений HTTP/2 по TLS требуется поддержка расширения TLS «Переговоры о протоколе прикладного уровня» (ALPN), доступного начиная с версии OpenSSL 1.0.2.
Также обратите внимание, что если директива ssl_prefer_server_ciphers установлена в значение “on”, директивы ciphers должны быть настроены в соответствии с RFC 9113, Приложение А (черный список) и поддерживаться клиентами.
Директивы
| Синтаксис: | http2 on | off; |
|---|---|
| Значение по умолчанию: | http2 off; |
| Контекст: | http, server |
Эта директива появилась в версии 1.25.1.
Включает протокол HTTP/2.
| Синтаксис: | http2_body_preread_size size; |
|---|---|
| Значение по умолчанию: | http2_body_preread_size 64k; |
| Контекст: | http, server |
Эта директива появилась в версии 1.11.0.
Устанавливает размер size буфера на запрос, в котором тело запроса может быть сохранено до его обработки.
| Синтаксис: | http2_chunk_size size; |
|---|---|
| Значение по умолчанию: | http2_chunk_size 8k; |
| Контекст: | http, server, location |
Устанавливает максимальный размер фрагментов, на которые разбивается тело ответа. Слишком маленькое значение увеличивает накладные расходы. Слишком большое значение ухудшает приоритезацию из-за блокировки начала очереди.
| Синтаксис: | http2_idle_timeout time; |
|---|---|
| Значение по умолчанию: | http2_idle_timeout 3m; |
| Контекст: | http, server |
Эта директива устарела начиная с версии 1.19.7. Следует использовать директиву keepalive_timeout.
Устанавливает таймаут бездействия, после которого соединение закрывается.
| Синтаксис: | http2_max_concurrent_pushes number; |
|---|---|
| Значение по умолчанию: | http2_max_concurrent_pushes 10; |
| Контекст: | http, server |
Эта директива появилась в версии 1.13.9.
Эта директива устарела начиная с версии 1.25.1.
Ограничивает максимальное количество одновременных запросов push в соединении.
| Синтаксис: | http2_max_concurrent_streams number; |
|---|---|
| Значение по умолчанию: | http2_max_concurrent_streams 128; |
| Контекст: | http, server |
Устанавливает максимальное количество одновременных потоков HTTP/2 в соединении.
| Синтаксис: | http2_max_field_size size; |
|---|---|
| Значение по умолчанию: | http2_max_field_size 4k; |
| Контекст: | http, server |
Эта директива устарела начиная с версии 1.19.7. Следует использовать директиву large_client_header_buffers.
Ограничивает максимальный размер сжатого по HPACK поля заголовка запроса. Ограничение применяется как к имени, так и к значению. Обратите внимание, что если используется кодирование Хаффмана, фактический размер декомпрессированных строк имени и значения может быть больше. Для большинства запросов значения по умолчанию достаточно.
| Синтаксис: | http2_max_header_size size; |
|---|---|
| Значение по умолчанию: | http2_max_header_size 16k; |
| Контекст: | http, server |
Эта директива устарела начиная с версии 1.19.7. Следует использовать директиву large_client_header_buffers.
Ограничивает максимальный размер всего списка заголовков запроса после декомпрессии HPACK. Для большинства запросов значения по умолчанию достаточно.
| Синтаксис: | http2_max_requests number; |
|---|---|
| Значение по умолчанию: | http2_max_requests 1000; |
| Контекст: | http, server |
Эта директива появилась в версии 1.11.6.
Эта директива устарела начиная с версии 1.19.7. Следует использовать директиву keepalive_requests.
Устанавливает максимальное количество запросов (включая запросы push), которые могут быть обработаны через одно соединение HTTP/2, после чего новый запрос клиента приведет к закрытию соединения и необходимости установления нового.
Периодическое закрытие соединений необходимо для освобождения выделенной памяти на соединение. Поэтому использование слишком большого максимального количества запросов может привести к чрезмерному потреблению памяти и не рекомендуется.
| Синтаксис: | http2_push uri | off; |
|---|---|
| Значение по умолчанию: | http2_push off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.13.9.
Эта директива устарела начиная с версии 1.25.1.
Предварительно отправляет (push) запрос на указанный uri вместе с ответом на исходный запрос. Будут обработаны только относительные URL с абсолютным путем, например:
http2_push /static/css/main.css;
Значение uri может содержать переменные.
Несколько директивы http2_push могут быть указаны на одном уровне конфигурации. Параметр off отменяет действие директивы http2_push унаследованной с предыдущего уровня конфигурации.
| Синтаксис: | http2_push_preload on | off; |
|---|---|
| Значение по умолчанию: | http2_push_preload off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.13.9.
Эта директива устарела начиная с версии 1.25.1.
Включает автоматическую конвертацию ссылок preload, указанных в полях «Link» заголовков ответа, в запросы push.
| Синтаксис: | http2_recv_buffer_size size; |
|---|---|
| Значение по умолчанию: | http2_recv_buffer_size 256k; |
| Контекст: | http |
Устанавливает размер входного буфера на каждый процесс.
| Синтаксис: | http2_recv_timeout time; |
|---|---|
| Значение по умолчанию: | http2_recv_timeout 30s; |
| Контекст: | http, server |
Эта директива устарела начиная с версии 1.19.7. Следует использовать директиву client_header_timeout.
Устанавливает таймаут ожидания дополнительных данных от клиента, после чего соединение закрывается.
Встроенные переменные
Модуль ngx_http_v2_module поддерживает следующие встроенные переменные:
$http2- идентификатор переговорного протокола: “
h2” для HTTP/2 по TLS, “h2c” для HTTP/2 по открытому TCP или пустая строка в противном случае.
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_v2_module.html