Модуль ngx_stream_limit_conn_module
- Пример конфигурации
- Директивы
- limit_conn
- limit_conn_dry_run
- limit_conn_log_level
- limit_conn_zone
- Встроенные переменные
Модуль ngx_stream_limit_conn_module (1.9.3) используется для ограничения количества подключений на основе определенного ключа, в частности, количества подключений с одного IP-адреса.
Пример конфигурации
stream {
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
...
limit_conn addr 1;
limit_conn_log_level error;
}
}
Директивы
| Синтаксис: | limit_conn zone number; |
|---|---|
| По умолчанию: | — |
| Контекст: | stream, server |
Устанавливает зону общей памяти и максимальное разрешенное количество подключений для заданного значения ключа. При превышении этого лимита сервер закроет подключение. Например, директивы
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
...
limit_conn addr 1;
}
позволяют только по одному подключению с одного IP-адреса одновременно.
При указании нескольких директивы limit_conn будет применяться любой настроенный лимит.
Эти директивы наследуются с предыдущего уровня конфигурации только в том случае, если на текущем уровне не определены директивы limit_conn.
| Синтаксис: | limit_conn_dry_run on | off; |
|---|---|
| По умолчанию: | limit_conn_dry_run off; |
| Контекст: | stream, server |
Данная директива появилась в версии 1.17.6.
Включает режим имитации (dry run). В этом режиме количество подключений не ограничивается, однако в зоне общей памяти количество избыточных подключений учитывается как обычно.
| Синтаксис: | limit_conn_log_level
info |
notice |
warn |
error; |
|---|---|
| По умолчанию: | limit_conn_log_level error; |
| Контекст: | stream, server |
Устанавливает требуемый уровень ведения журнала для случаев, когда сервер ограничивает количество подключений.
| Синтаксис: | limit_conn_zone
key
zone=name:size; |
|---|---|
| По умолчанию: | — |
| Контекст: | stream |
Устанавливает параметры зоны общей памяти, которая будет хранить состояния для различных ключей. В частности, состояние включает текущее количество подключений. key может содержать текст, переменные и их комбинации (1.11.2). Подключения с пустым значением ключа не учитываются. Пример использования:
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-битных платформах. Одна мегабайтовая зона может хранить около 32 тысяч состояний по 32 байта или около 16 тысяч состояний по 64 байта. Если хранилище зоны закончится, сервер закроет подключение.
Кроме того, в рамках нашей коммерческой подписки информация о статусе каждой такой зоны общей памяти может быть получена или сброшена с помощью API начиная с версии 1.17.7.
Встроенные переменные
$limit_conn_status- сохраняет результат ограничения количества подключений (1.17.6):
PASSED,REJECTED, илиREJECTED_DRY_RUN
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html