Модуль ngx_http_v2_module
Модуль 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, необходимо наличие поддержки расширения “Application-Layer Protocol Negotiation” (ALPN) протокола TLS, появившейся в OpenSSL версии 1.0.2.
Если
директива ssl_prefer_server_ciphers
установлена в значение “on”,
шифры
должны быть настроены таким образом, чтобы соответствовать чёрному списку
RFC 9113, Appendix A,
а также поддерживаться клиентами.
Директивы
| Синтаксис: | http2  | 
|---|---|
| Умолчание: | http2 off; | 
| Контекст: | http,server | 
Эта директива появилась в версии 1.25.1.
Разрешает протокол HTTP/2.
| Синтаксис: | http2_body_preread_size  | 
|---|---|
| Умолчание: | http2_body_preread_size 64k; | 
| Контекст: | http,server | 
Эта директива появилась в версии 1.11.0.
Задаёт размер буфера для каждого запроса,
в который может сохраняться тело запроса
до того, как оно начнёт обрабатываться.
| Синтаксис: | http2_chunk_size  | 
|---|---|
| Умолчание: | http2_chunk_size 8k; | 
| Контекст: | http,server,location | 
Задаёт максимальный размер частей, на которое будет разделяться тело ответа. Слишком маленькое значение может привести к росту накладных расходов. Слишком большое значение может негативно сказаться на приоритизации из-за блокировки очереди.
| Синтаксис: | http2_idle_timeout  | 
|---|---|
| Умолчание: | http2_idle_timeout 3m; | 
| Контекст: | http,server | 
Эта директива устарела начиная с версии 1.19.7. Вместо неё следует использовать директиву keepalive_timeout.
Задаёт таймаут неактивности, после которого соединение закрывается.
| Синтаксис: | http2_max_concurrent_pushes  | 
|---|---|
| Умолчание: | http2_max_concurrent_pushes 10; | 
| Контекст: | http,server | 
Эта директива появилась в версии 1.13.9.
Эта директива устарела начиная с версии 1.25.1.
Ограничивает максимальное число параллельных push-запросов в соединении.
| Синтаксис: | http2_max_concurrent_streams  | 
|---|---|
| Умолчание: | http2_max_concurrent_streams 128; | 
| Контекст: | http,server | 
Задаёт максимальное число параллельных HTTP/2-потоков в соединении.
| Синтаксис: | http2_max_field_size  | 
|---|---|
| Умолчание: | http2_max_field_size 4k; | 
| Контекст: | http,server | 
Эта директива устарела начиная с версии 1.19.7. Вместо неё следует использовать директиву large_client_header_buffers.
Ограничивает максимальный размер заголовка запроса, сжатого при помощи HPACK. Ограничение применяется в равной степени как к имени, так и к значению. Если применяется кодирование Хаффмана, то фактический размер распакованных строк имени и значения может быть больше. Ограничение по умолчанию подходит для большинства запросов.
| Синтаксис: | http2_max_header_size  | 
|---|---|
| Умолчание: | http2_max_header_size 16k; | 
| Контекст: | http,server | 
Эта директива устарела начиная с версии 1.19.7. Вместо неё следует использовать директиву large_client_header_buffers.
Ограничивает максимальный размер всего списка заголовков запроса после распаковки HPACK. Ограничение по умолчанию подходит для большинства запросов.
| Синтаксис: | http2_max_requests  | 
|---|---|
| Умолчание: | http2_max_requests 1000; | 
| Контекст: | http,server | 
Эта директива появилась в версии 1.11.6.
Эта директива устарела начиная с версии 1.19.7. Вместо неё следует использовать директиву keepalive_requests.
Задаёт максимальное число запросов (включая push-запросы), которые можно сделать по одному соединению HTTP/2, после чего очередной клиентский запрос приведёт к закрытию соединения и необходимости установить новое соединение.
Периодическое закрытие соединений необходимо для освобождения памяти, выделенной под конкретные соединения. Поэтому использование слишком большого максимального числа запросов может приводить к чрезмерному потреблению памяти и не рекомендуется.
| Синтаксис: | http2_push  | 
|---|---|
| Умолчание: | http2_push off; | 
| Контекст: | http,server,location | 
Эта директива появилась в версии 1.13.9.
Эта директива устарела начиная с версии 1.25.1.
Заблаговременно отправляет
(push) запрос
к заданному uri
вместе с ответом на оригинальный запрос.
Будут обработаны только относительные URI с абсолютными путями,
например:
http2_push /static/css/main.css;
 
В значении uri допустимо использование переменных.
На одном уровне конфигурации можно указать несколько
http2_push директив.
Параметр off отменяет действие
унаследованных с предыдущего уровня конфигурации
директив http2_push.
| Синтаксис: | http2_push_preload  | 
|---|---|
| Умолчание: | http2_push_preload off; | 
| Контекст: | http,server,location | 
Эта директива появилась в версии 1.13.9.
Эта директива устарела начиная с версии 1.25.1.
Разрешает автоматическое преобразование preload links, указанных в полях “Link” заголовка ответа, в push-запросы.
| Синтаксис: | http2_recv_buffer_size  | 
|---|---|
| Умолчание: | http2_recv_buffer_size 256k; | 
| Контекст: | http | 
Задаёт размер входного буфера для рабочего процесса.
| Синтаксис: | http2_recv_timeout  | 
|---|---|
| Умолчание: | 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, либо пустая строка.
