Модуль ngx_http_v2_module
Модуль ngx_http_v2_module
(1.9.5) обеспечивает
поддержку HTTP/2
и заменяет
модуль ngx_http_spdy_module.
По умолчанию этот модуль не собирается, его сборку необходимо разрешить
с помощью конфигурационного параметра
--with-http_v2_module
.
Известные проблемы
Модуль экспериментальный, поэтому возможно всё.
До версии 1.9.14 буферизация тела запроса клиента не могла быть запрещена независимо от значения директив proxy_request_buffering, fastcgi_request_buffering, uwsgi_request_buffering и scgi_request_buffering.
Пример конфигурации
server { listen 443 ssl http2; ssl_certificate server.crt; ssl_certificate_key server.key; }
Чтобы принимать HTTP/2-соединения по TLS необходимо наличие поддержки расширения “Application-Layer Protocol Negotiation” (ALPN) протокола TLS, появившейся лишь в OpenSSL версии 1.0.2. Работа расширения “Next Protocol Negotiation” (NPN) протокола TLS (поддерживаемого начиная с OpenSSL версии 1.0.1) в данном случае не гарантируется.
Если
директива ssl_prefer_server_ciphers
установлена в значение “on
”,
шифры
должны быть настроены таким образом, чтобы соответствовать чёрному списку
RFC 7540, Appendix A,
а также поддерживаться клиентами.
Директивы
Синтаксис: |
http2_chunk_size |
---|---|
Умолчание: |
http2_chunk_size 8k; |
Контекст: |
http , server , location |
Задаёт максимальный размер частей, на которое будет разделяться тело ответа. Слишком маленькое значение может привести к росту накладных расходов. Слишком большое значение может негативно сказаться на приоритизации из-за блокировки очереди.
Синтаксис: |
http2_idle_timeout |
---|---|
Умолчание: |
http2_idle_timeout 3m; |
Контекст: |
http , server |
Задаёт таймаут неактивности, после которого соединение закрывается.
Синтаксис: |
http2_max_concurrent_streams |
---|---|
Умолчание: |
http2_max_concurrent_streams 128; |
Контекст: |
http , server |
Задаёт максимальное число параллельных HTTP/2-потоков в соединении.
Синтаксис: |
http2_max_field_size |
---|---|
Умолчание: |
http2_max_field_size 4k; |
Контекст: |
http , server |
Ограничивает максимальный размер заголовка запроса, сжатого при помощи HPACK. Ограничение применяется в равной степени как к имени, так и к значению. Если применяется кодирование Хаффмана, то фактический размер распакованных строк имени и значения может быть больше. Ограничение по умолчанию подходит для большинства запросов.
Синтаксис: |
http2_max_header_size |
---|---|
Умолчание: |
http2_max_header_size 16k; |
Контекст: |
http , server |
Ограничивает максимальный размер всего списка заголовков запроса после распаковки HPACK. Ограничение по умолчанию подходит для большинства запросов.
Синтаксис: |
http2_recv_buffer_size |
---|---|
Умолчание: |
http2_recv_buffer_size 256k; |
Контекст: |
http |
Задаёт размер входного буфера для рабочего процесса.
Синтаксис: |
http2_recv_timeout |
---|---|
Умолчание: |
http2_recv_timeout 30s; |
Контекст: |
http , server |
Задаёт таймаут в случае, когда от клиента ожидаются ещё данные, после которого соединение закрывается.
Встроенные переменные
Модуль ngx_http_v2_module
поддерживает следующие встроенные переменные:
$http2
-
согласованный идентификатор протокола:
“
h2
” для HTTP/2 через TLS, “h2c
” для HTTP/2 через незашифрованный TCP, либо пустая строка.