Spec-Zone.ru › nginx

Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API