limit_conn

Директива `limit_conn` ограничивает количество одновременных подключений с одного IP address. — NGINX HTTP Core

limit_conn
httpserverlocation
Синтаксисlimit_conn zone_name number;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы2

Описание

Директива `limit_conn` в NGINX используется для ограничения количества одновременных подключений, которые могут быть установлены с одного IP address к конкретному серверу или блоку location. Это важно для предотвращения злоупотреблений или перегрузки, вызванной слишком большим числом подключений, что может ухудшить производительность сервера. Директива принимает два аргумента: имя зоны и максимальное число подключений, разрешённых для каждого IP address. Директива работает совместно с `limit_conn_zone`, которая определяет разделяемую область памяти для отслеживания количества подключений с IP address. Когда поступает запрос, NGINX увеличивает счётчик подключений для исходного IP address в заданной зоне. Если количество подключений превышает установленный лимит, клиент получит ошибку 503 Service Unavailable. Счётчик подключений ведётся по каждому IP address и обычно хранится в памяти, что обеспечивает быструю проверку лимитов подключений без необходимости в постоянном хранилище. Это помогает управлять перегрузками и обеспечивает справедливое распределение ресурсов сервера между пользователями. Для реализации директивы администраторам необходимо задать лимит в соответствующем контексте (http, server или location) и убедиться, что настроена соответствующая директива `limit_conn_zone`. Баланс между определением зоны и установкой лимита в соответствии с ожидаемым трафиком является ключевым для эффективного использования этой директивы.

Пример конфига

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    server {
        location / {
            limit_conn addr 1;
        }
    }
}

Убедитесь, что директива `limit_conn_zone` определена перед использованием `limit_conn`, чтобы избежать ошибок конфигурации.

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

Учитывайте последствия ограничений на соединения для поведения приложения, особенно для сервисов с высокой активностью пользователей.