<!-- review: finished -->

<a id="stream-limit-conn"></a>

# Limit Conn

Позволяет ограничить число соединений по заданному ключу, в частности, число соединений с одного IP-адреса.

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

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

```nginx
stream {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    ...

    server {

        ...

        limit_conn           addr 1;
        limit_conn_log_level error;
    }
}
```

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

## Директивы

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

<a id="s-limit-conn"></a>

### limit_conn

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

Задает зону разделяемой памяти и максимально допустимое число соединений для одного значения ключа. При превышении этого числа сервер закроет соединение. Например, директивы

```nginx
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    ...
    limit_conn addr 1;
}
```

разрешают одновременно обрабатывать не более одного соединения с одного IP-адреса.

Допустимо одновременное указание нескольких директив `limit_conn`, при этом будет срабатывать любое из ограничений.

Директивы наследуются с предыдущего уровня конфигурации при условии, что на данном уровне не описаны свои директивы `limit_conn`.

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

<a id="s-limit-conn-dry-run"></a>

### limit_conn_dry_run

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

Включает режим пробного запуска. В данном режиме число соединений не ограничивается, однако в [зоне разделяемой памяти](#s-limit-conn-zone) текущее число избыточных соединений учитывается как обычно.

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

<a id="s-limit-conn-log-level"></a>

### limit_conn_log_level

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

Задает желаемый уровень записи в лог случаев ограничения числа соединений.

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

<a id="s-limit-conn-zone"></a>

### limit_conn_zone

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

Задает параметры зоны разделяемой памяти, которая хранит состояние для разных значений ключа. Состояние в частности содержит текущее число соединений. В качестве ключа может использоваться текст, переменные и их комбинации. Запросы с пустым значением ключа не учитываются.

Пример использования:

```nginx
limit_conn_zone $binary_remote_addr zone=addr:10m;
```

Здесь в качестве ключа используется IP-адрес клиента, задаваемый переменной `$binary_remote_addr`.

Длина значения `$binary_remote_addr` равна 4 байтам для IPv4-адресов или 16 байтам для IPv6-адресов. При этом размер состояния всегда равен 32 или 64 байтам на 32-битных платформах и 64 байтам на 64-битных. В зоне размером 1 мегабайт может разместиться около 32 тысяч состояний размером 32 байта или 16 тысяч состояний размером 64 байта. При переполнении зоны сервер закроет соединение.

<a id="built-in-variables-19"></a>

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

<a id="v-s-limit-conn-status"></a>

### `$limit_conn_status`

хранит результат ограничения числа соединений: `PASSED`, `REJECTED` или `REJECTED_DRY_RUN`
