<!-- review: finished -->

<a id="http-grpc"></a>

# gRPC

Позволяет передавать запросы gRPC-серверу.

#### NOTE
Для работы этого модуля необходим модуль [HTTP2](https://angie.software//angie/docs/configuration/modules/http/http_v2.md#http-v2).

<a id="configuration-example-18"></a>

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

```nginx
server {
    listen 9000;

    http2 on;

    location / {
        grpc_pass 127.0.0.1:9000;
    }
}
```

<a id="directives-19"></a>

## Директивы

<a id="index-0"></a>

<a id="grpc-bind"></a>

### grpc_bind

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

Задает локальный IP-адрес с необязательным портом, который будет использоваться в исходящих соединениях с gRPC-сервером. В значении параметра допустимо использование переменных. Специальное значение `off` отменяет действие унаследованной с предыдущего уровня конфигурации директивы grpc_bind, позволяя системе самостоятельно выбирать локальный IP-адрес и порт.

Параметр `transparent` позволяет задать нелокальный IP-aдрес, который будет использоваться в исходящих соединениях с gRPC-сервером, например, реальный IP-адрес клиента:

```nginx
grpc_bind $remote_addr transparent;
```

Для работы параметра обычно требуется запустить рабочие процессы Angie с привилегиями [суперпользователя](https://angie.software//angie/docs/configuration/modules/core.md#user). В Linux это не требуется, так как если указан параметр transparent, то рабочие процессы наследуют capability CAP_NET_RAW из главного процесса.

#### NOTE
Необходимо настроить таблицу маршрутизации ядра для перехвата сетевого трафика с gRPC-сервера.

<a id="index-1"></a>

<a id="grpc-buffer-size"></a>

### grpc_buffer_size

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

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

<a id="index-2"></a>

<a id="grpc-connect-timeout"></a>

### grpc_connect_timeout

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

Задает таймаут для установления соединения с gRPC-сервером. Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.

<a id="index-3"></a>

<a id="grpc-connection-drop"></a>

### grpc_connection_drop

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

Настраивает завершение всех соединений с проксируемым сервером,
если он был удален из группы или помечен как постоянно недоступный
в результате процесса [reresolve](https://angie.software//angie/docs/configuration/modules/http/http_upstream.md#reresolve)
или [команды API](https://angie.software//angie/docs/configuration/modules/http/http_api.md#api-config-methods) `DELETE`.

Соединение завершается, когда обрабатывается следующее событие чтения или записи
для клиента или проксируемого сервера.

Установка времени включает [таймаут](https://angie.software//angie/docs/configuration/configfile.md#syntax) до завершения соединения;
при выборе значения `on` соединения завершаются немедленно.

<a id="index-4"></a>

<a id="grpc-hide-header"></a>

### grpc_hide_header

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

По умолчанию Angie не передает клиенту поля заголовка `Date`, `Server` и `X-Accel-...` из ответа gRPC-сервера. Директива `grpc_hide_header` задает дополнительные поля, которые не будут передаваться. Если же передачу полей нужно разрешить, можно воспользоваться директивой [grpc_pass_header](#grpc-pass-header).

<a id="index-5"></a>

<a id="grpc-ignore-headers"></a>

### grpc_ignore_headers

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

Запрещает обработку некоторых полей заголовка из ответа gRPC-сервера. В директиве можно указать поля `X-Accel-Redirect` и `X-Accel-Charset`.

Если не запрещено, обработка этих полей заголовка заключается в следующем:

* `X-Accel-Redirect` производит [внутреннее перенаправление](https://angie.software//angie/docs/configuration/modules/http/index.md#internal) на указанный URI;
* `X-Accel-Charset` задает желаемую [кодировку](https://angie.software//angie/docs/configuration/modules/http/http_charset.md#id3) ответа.

<a id="index-6"></a>

<a id="grpc-intercept-errors"></a>

### grpc_intercept_errors

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

Определяет, передавать ли клиенту ответы gRPC-сервера с кодом больше либо равным 300, или же перехватывать их и перенаправлять на обработку Angie с помощью директивы [error_page](https://angie.software//angie/docs/configuration/modules/http/index.md#error-page).

<a id="index-7"></a>

<a id="grpc-next-upstream"></a>

### grpc_next_upstream

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `grpc_next_upstream` `error` | `timeout` | `invalid_header` | `http_500` | `http_502` | `http_503` | `http_504` | `http_403` | `http_404` | `http_429` | `non_idempotent` | `off` ...;   |
|------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| По умолчанию                                                                             | `grpc_next_upstream error timeout;`                                                                                                                                                      |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location                                                                                                                                                                   |

Определяет, в каких случаях запрос будет передан следующему в группе [upstream](https://angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-upstream) серверу:

| `error`          | произошла ошибка соединения с сервером, передачи ему запроса или чтения заголовка ответа сервера;                                                                                                                                                                        |
|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `timeout`        | произошел таймаут во время соединения с сервером, передачи ему запроса или чтения заголовка ответа сервера;                                                                                                                                                              |
| `invalid_header` | сервер вернул пустой или неверный ответ;                                                                                                                                                                                                                                 |
| `http_500`       | сервер вернул ответ с кодом 500;                                                                                                                                                                                                                                         |
| `http_502`       | сервер вернул ответ с кодом 502;                                                                                                                                                                                                                                         |
| `http_503`       | сервер вернул ответ с кодом 503;                                                                                                                                                                                                                                         |
| `http_504`       | сервер вернул ответ с кодом 504;                                                                                                                                                                                                                                         |
| `http_403`       | сервер вернул ответ с кодом 403;                                                                                                                                                                                                                                         |
| `http_404`       | сервер вернул ответ с кодом 404;                                                                                                                                                                                                                                         |
| `http_429`       | сервер вернул ответ с кодом 429;                                                                                                                                                                                                                                         |
| `non_idempotent` | обычно запросы с [неидемпотентным](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2) методом (POST, LOCK, PATCH) не передаются на другой сервер, если запрос серверу группы уже был отправлен; включение параметра явно разрешает повторять подобные запросы; |
| `off`            | запрещает передачу запроса следующему серверу.                                                                                                                                                                                                                           |

#### NOTE
Необходимо понимать, что передача запроса следующему серверу возможна только при условии, что клиенту еще ничего не передавалось. То есть, если ошибка или таймаут возникли в середине передачи ответа клиенту, то действие директивы на такой запрос не распространяется.

Директива также определяет, что считается [неудачной попыткой](https://angie.software//angie/docs/configuration/modules/http/http_upstream.md#max-fails) работы с сервером.

| `error`, `timeout`, `invalid_header`                       | всегда считаются неудачными попытками, даже если они не указаны в директиве   |
|------------------------------------------------------------|-------------------------------------------------------------------------------|
| `http_500`, `http_502`, `http_503`, `http_504`, `http_429` | считаются неудачными попытками, только если они указаны в директиве           |
| `http_403`, `http_404`                                     | никогда не считаются неудачными попытками                                     |

Передача запроса следующему серверу может быть ограничена по [количеству попыток](#grpc-next-upstream-tries) и по [времени](#grpc-next-upstream-timeout).

<a id="index-8"></a>

<a id="grpc-next-upstream-timeout"></a>

### grpc_next_upstream_timeout

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

Ограничивает время, в течение которого возможна передача запроса [следующему](#grpc-next-upstream) серверу.

| `0`   | отключает это ограничение   |
|-------|-----------------------------|

<a id="index-9"></a>

<a id="grpc-next-upstream-tries"></a>

### grpc_next_upstream_tries

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

Ограничивает число допустимых попыток для передачи запроса [следующему](#grpc-next-upstream) серверу.

| `0`   | отключает это ограничение   |
|-------|-----------------------------|

<a id="index-10"></a>

<a id="grpc-pass"></a>

### grpc_pass

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

Задает адрес gRPC-сервера. Адрес может быть указан в виде доменного имени или IP-адреса, и порта:

```nginx
grpc_pass localhost:9000;
```

или в виде пути UNIX-сокета:

```nginx
grpc_pass unix:/tmp/grpc.socket;
```

Также может использоваться схема `grpc://`:

```nginx
grpc_pass grpc://127.0.0.1:9000;
```

Для использования gRPC по SSL необходимо использовать схему `grpcs://`:

```nginx
grpc_pass grpcs://127.0.0.1:443;
```

Если доменному имени соответствует несколько адресов, то все они будут использоваться по очереди (round-robin). Кроме того, в качестве адреса можно указать [группу серверов](https://angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-upstream).

В значении параметра можно использовать переменные. В этом случае, если адрес указан в виде доменного имени, имя ищется среди описанных групп серверов и если не найдено, то определяется с помощью [resolver](https://angie.software//angie/docs/configuration/modules/http/index.md#resolver)'а.

#### NOTE
Если `grpc_pass` стоит в `location` с косой чертой в конце префикса
(например, `location /name/`),
и при этом в директиве [auto_redirect](https://angie.software//angie/docs/configuration/modules/http/index.md#auto-redirect) указано `default`,
запросы без косой черты в конце будут перенаправляться (`/name -> /name/`).

<a id="index-11"></a>

<a id="grpc-pass-header"></a>

### grpc_pass_header

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

Разрешает передавать от gRPC-сервера клиенту [запрещенные для передачи](#grpc-hide-header) поля заголовка.

<a id="index-12"></a>

<a id="grpc-read-timeout"></a>

### grpc_read_timeout

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

Задает таймаут при чтении ответа gRPC-сервера. Таймаут устанавливается не на всю передачу ответа, а только между двумя операциями чтения. Если по истечении этого времени gRPC-сервер ничего не передаст, соединение закрывается.

<a id="index-13"></a>

<a id="grpc-send-timeout"></a>

### grpc_send_timeout

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

Задает таймаут при передаче запроса gRPC-серверу. Таймаут устанавливается не на всю передачу запроса, а только между двумя операциями записи. Если по истечении этого времени gRPC-сервер не примет новых данных, соединение закрывается.

<a id="index-14"></a>

<a id="grpc-set-header"></a>

### grpc_set_header

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

Позволяет переопределять или добавлять поля заголовка запроса, [передаваемые](https://angie.software//angie/docs/configuration/modules/http/http_proxy.md#proxy-pass-request-headers) проксируемому серверу. В качестве значения можно использовать текст, переменные и их комбинации. Директивы наследуются с предыдущего уровня конфигурации при условии, что на данном уровне не описаны свои директивы grpc_set_header.

Если значение поля заголовка — пустая строка, то поле вообще не будет передаваться gRPC-серверу:

```nginx
grpc_set_header Accept-Encoding "";
```

<a id="index-15"></a>

<a id="grpc-socket-keepalive"></a>

### grpc_socket_keepalive

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

Конфигурирует поведение "TCP keepalive" для исходящих соединений к проксируемому серверу.

| `""`   | По умолчанию для сокета действуют настройки операционной системы.   |
|--------|---------------------------------------------------------------------|
| `on`   | для сокета включается параметр SO_KEEPALIVE                         |

<a id="index-16"></a>

<a id="grpc-ssl-certificate"></a>

### grpc_ssl_certificate

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

Задает файл с сертификатом в формате PEM для аутентификации на gRPC SSL-сервере. В имени файла можно использовать переменные.

<a id="index-17"></a>

<a id="grpc-ssl-certificate-cache"></a>

### grpc_ssl_certificate_cache

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `grpc_ssl_certificate_cache` `off`;<br/><br/>`grpc_ssl_certificate_cache` `max=`N [`inactive=`time] [`valid=`time];   |
|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| Значение по умолчанию                                                                    | `grpc_ssl_certificate_cache off;`                                                                                     |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location                                                                                                |

Определяет кэш для хранения [SSL-сертификатов](#grpc-ssl-certificate) и [секретных ключей](#grpc-ssl-certificate-key), заданных через переменные.

Директива поддерживает следующие параметры:

- `max` — устанавливает максимальное количество элементов в кэше. При переполнении кэша
  удаляются наименее недавно использованные (LRU) элементы.
- `inactive` — определяет время, после которого элемент будет удален, если
  к нему не было обращений. Значение по умолчанию — 10 секунд.
- `valid` — определяет время, в течение которого элемент кэша считается
  действительным и может использоваться повторно. Значение по умолчанию — 60 секунд. По истечении этого времени
  сертификаты перезагружаются или проходят повторную проверку.
- `off` — отключает кэш.

Пример:

```nginx
grpc_ssl_certificate       $grpc_ssl_server_name.crt;
grpc_ssl_certificate_key   $grpc_ssl_server_name.key;
grpc_ssl_certificate_cache max=1000 inactive=20s valid=1m;
```

<a id="index-18"></a>

<a id="grpc-ssl-certificate-key"></a>

### grpc_ssl_certificate_key

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

Задает файл с секретным ключом в формате PEM для аутентификации на gRPC SSL-сервере.

Вместо файла можно указать значение "engine:имя:id", которое загружает ключ с указанным id из OpenSSL engine с заданным именем.

Вместо файла можно указать значение "store:scheme:id", которое используется для загрузки ключа с указанным id и URI-схемой scheme, зарегистрированной в OpenSSL provider, например [pkcs11](https://datatracker.ietf.org/doc/html/rfc7512).

В имени файла можно использовать переменные.

<a id="index-19"></a>

<a id="grpc-ssl-ciphers"></a>

### grpc_ssl_ciphers

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

Описывает разрешенные шифры для запросов к gRPC SSL-серверу. Шифры задаются в формате, поддерживаемом библиотекой OpenSSL.

Список шифров зависит от установленной версии OpenSSL.
Полный список можно посмотреть с помощью команды `openssl ciphers`.

#### WARNING
Директива `grpc_ssl_ciphers`  *не* настраивает шифры для TLS 1.3 при
использовании OpenSSL. Для настройки шифров TLS 1.3 в OpenSSL используйте
директиву [grpc_ssl_conf_command](#grpc-ssl-conf-command), добавленную для расширенной
конфигурации SSL.

- В LibreSSL шифры TLS 1.3  *можно* настраивать с помощью
  `grpc_ssl_ciphers`.
- В BoringSSL шифры TLS 1.3 настроить невозможно.

<a id="index-20"></a>

<a id="grpc-ssl-conf-command"></a>

### grpc_ssl_conf_command

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

Задает произвольные конфигурационные [команды](https://docs.openssl.org/master/man3/SSL_CONF_cmd/) OpenSSL при установлении соединения с gRPC SSL-сервером.

#### NOTE
Директива поддерживается при использовании OpenSSL 1.0.2 и выше.
Чтобы настроить шифры TLS 1.3 в OpenSSL, используйте команду `ciphersuites`.

На одном уровне может быть указано несколько директив grpc_ssl_conf_command. Директивы наследуются с предыдущего уровня конфигурации при условии, что на данном уровне не описаны свои директивы grpc_ssl_conf_command.

#### WARNING
Следует учитывать, что изменение настроек OpenSSL напрямую может привести к неожиданному поведению.

<a id="index-21"></a>

<a id="grpc-ssl-crl"></a>

### grpc_ssl_crl

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

Указывает файл с отозванными сертификатами (CRL) в формате PEM, используемыми при [проверке](#grpc-ssl-verify) сертификата gRPC SSL-сервера.

<a id="index-22"></a>

<a id="grpc-ssl-name"></a>

### grpc_ssl_name

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

Позволяет переопределить имя сервера, используемое при [проверке](#grpc-ssl-verify) сертификата gRPC SSl-сервера, а также для [передачи его через SNI](#grpc-ssl-server-name) при установлении соединения с gRPC SSL-сервером.

По умолчанию используется имя хоста из [grpc_pass](#grpc-pass).

<a id="index-23"></a>

<a id="grpc-ssl-password-file"></a>

### grpc_ssl_password_file

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

Задает файл с паролями от [секретных ключей](#grpc-ssl-certificate-key), где каждый пароль указан на отдельной строке. Пароли применяются по очереди в момент загрузки ключа.

<a id="index-24"></a>

<a id="grpc-ssl-protocols"></a>

### grpc_ssl_protocols

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `grpc_ssl_protocols` [`SSLv2`] [`SSLv3`] [`TLSv1`] [`TLSv1.1`] [`TLSv1.2`] [`TLSv1.3`];   |
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| По умолчанию                                                                             | `grpc_ssl_protocols TLSv1.2 TLSv1.3;`                                                     |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http, server, location                                                                    |

#### Versionchanged
Изменено в версии 1.2.0: Параметр `TLSv1.3` добавлен к используемым по умолчанию.

Разрешает указанные протоколы для запросов к gRPC SSL-серверу.

<a id="index-25"></a>

<a id="grpc-ssl-server-name"></a>

### grpc_ssl_server_name

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

Разрешает или запрещает передачу имени сервера,
заданного директивой [grpc_ssl_name](#grpc-ssl-name),
через расширение
[Server Name Indication](http://en.wikipedia.org/wiki/Server_Name_Indication)
протокола TLS
(SNI,
[RFC 6066](https://datatracker.ietf.org/doc/html/rfc6066.html))
при установлении соединения с SSL-сервером gRPC.

<a id="index-26"></a>

<a id="grpc-ssl-session-reuse"></a>

### grpc_ssl_session_reuse

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

Определяет, использовать ли повторно SSL-сессии при работе с gRPC-сервером. Если в логах появляются ошибки "SSL3_GET_FINISHED:digest check failed", то можно попробовать выключить повторное использование сессий.

<a id="index-27"></a>

<a id="grpc-ssl-trusted-certificate"></a>

### grpc_ssl_trusted_certificate

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

Задает файл с доверенными сертификатами CA в формате PEM, используемыми при [проверке](#grpc-ssl-verify) сертификата gRPC SSL-сервера.

<a id="index-28"></a>

<a id="grpc-ssl-verify"></a>

### grpc_ssl_verify

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

Разрешает или запрещает проверку сертификата gRPC SSL-сервера.

<a id="index-29"></a>

<a id="grpc-ssl-verify-depth"></a>

### grpc_ssl_verify_depth

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

Устанавливает глубину проверки в цепочке сертификатов gRPC SSL-сервера.
