<!-- review: finished -->

<a id="adc-http-v2"></a>

# HTTP/2

Обеспечивает поддержку [HTTP/2](https://datatracker.ietf.org/doc/html/rfc9113).

При [сборке из исходного кода](https://angie.software//angie/docs/installation/sourcebuild.md#sourcebuild) модуль не собирается по умолчанию; его необходимо
включить с помощью [параметра сборки](https://angie.software//angie/docs/installation/sourcebuild.md#configure)
`‑‑with‑http_v2_module`.
В пакетах и образах из
[наших репозиториев](https://angie.software//angie/docs/installation/index.md#install-packages)
модуль включен в сборку.

<a id="adc-configuration-example-49"></a>

## Пример конфигурации

```nginx
server {
    listen 443 ssl;

    http2 on;

    ssl_certificate server.crt;
    ssl_certificate_key server.key;
}
```

#### NOTE
Чтобы принимать HTTP/2-соединения по TLS, необходимо наличие поддержки расширения "Application-Layer Protocol Negotiation" (ALPN) протокола TLS, появившейся в [OpenSSL](http://www.openssl.org/) версии 1.0.2.

Если директива [ssl_prefer_server_ciphers](https://angie.software//angie/docs/configuration/modules/http/http_ssl.md#ssl-prefer-server-ciphers) установлена в значение "on", [шифры](https://angie.software//angie/docs/configuration/modules/http/http_ssl.md#ssl-ciphers) должны быть настроены таким образом, чтобы соответствовать черному списку [RFC 9113, Appendix A](https://datatracker.ietf.org/doc/html/rfc9113#appendix-A) а также поддерживаться клиентами.

<a id="adc-directives-52"></a>

## Директивы

<a id="adc-http2"></a>

### http2

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `http2` `on` | `off`;   |
|------------------------------------------------------------------------------------------|-------------------------|
| По умолчанию                                                                             | `http2 off;`            |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server            |

Разрешает протокол [HTTP/2](https://datatracker.ietf.org/doc/html/rfc9113).

<a id="adc-http2-body-preread-size"></a>

### http2_body_preread_size

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `http2_body_preread_size` размер;   |
|------------------------------------------------------------------------------------------|-------------------------------------|
| По умолчанию                                                                             | —                                   |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server                        |

Задает размер буфера для каждого запроса, в который может сохраняться тело запроса до того, как оно начнет обрабатываться.

<a id="adc-http2-chunk-size"></a>

### http2_chunk_size

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `http2_chunk_size` размер;   |
|------------------------------------------------------------------------------------------|------------------------------|
| По умолчанию                                                                             | `http2_chunk_size 8k;`       |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location       |

Задает максимальный размер частей, на которое будет разделяться тело ответа. Слишком маленькое значение может привести к росту накладных расходов. Слишком большое значение может негативно сказаться на приоритизации из-за [блокировки очереди](http://en.wikipedia.org/wiki/Head-of-line_blocking).

<a id="adc-http2-max-concurrent-pushes"></a>

### http2_max_concurrent_pushes

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `http2_max_concurrent_pushes` число;   |
|------------------------------------------------------------------------------------------|----------------------------------------|
| По умолчанию                                                                             | `http2_max_concurrent_pushes 10;`      |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server                           |

Ограничивает максимальное число параллельных [push](https://angie.software//angie/docs/configuration/modules/http/http_v2.md#http2-push)-запросов в соединении.

<a id="adc-http2-max-concurrent-streams"></a>

### http2_max_concurrent_streams

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `http2_max_concurrent_streams` число;   |
|------------------------------------------------------------------------------------------|-----------------------------------------|
| По умолчанию                                                                             | `http2_max_concurrent_streams 128;`     |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server                            |

Задает максимальное число параллельных HTTP/2-потоков в соединении.

<a id="adc-http2-push"></a>

### http2_push

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `http2_push` uri | `off`;   |
|------------------------------------------------------------------------------------------|-----------------------------|
| По умолчанию                                                                             | `http2_push off;`           |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location      |

Заблаговременно отправляет ([push](https://datatracker.ietf.org/doc/html/rfc9113#name-server-push)) запрос к заданному uri вместе с ответом на оригинальный запрос. Будут обработаны только относительные URI с абсолютными путями, например:

```nginx
http2_push /static/css/main.css;
```

В значении `uri` допустимо использование переменных.

На одном уровне конфигурации можно указать несколько http2_push директив. Параметр `off` отменяет действие унаследованных с предыдущего уровня конфигурации директив http2_push.

<a id="adc-http2-push-preload"></a>

### http2_push_preload

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `http2_push_preload` `on` | `off`;   |
|------------------------------------------------------------------------------------------|--------------------------------------|
| По умолчанию                                                                             | `http2_push_preload off;`            |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location               |

Разрешает автоматическое преобразование [preload links](https://www.w3.org/TR/preload/#server-push-http-2), указанных в полях "Link" заголовка ответа, в [push](https://datatracker.ietf.org/doc/html/rfc9113#name-server-push)-запросы.

<a id="adc-http2-recv-buffer-size"></a>

### http2_recv_buffer_size

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `http2_recv_buffer_size` размер;   |
|------------------------------------------------------------------------------------------|------------------------------------|
| По умолчанию                                                                             | `http2_recv_buffer_size 256k;`     |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http                               |

Задает размер входного буфера для [рабочего процесса](https://angie.software//angie/docs/configuration/modules/core.md#worker-processes).

<a id="adc-built-in-variables-17"></a>

## Встроенные переменные

Модуль http_v2 поддерживает следующие встроенные переменные:

<a id="adc-v-http2"></a>

### `$http2`

согласованный идентификатор протокола:

| `h2`   | для HTTP/2 через TLS                 |
|--------|--------------------------------------|
| `h2c`  | для HTTP/2 через незашифрованный TCP |
| `""`   | пустая строка для остальных случаев  |
