limit_conn
Директива `limit_conn` ограничивает количество одновременных подключений с одного IP address. — NGINX HTTP Core
Описание
Директива `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`, чтобы избежать ошибок конфигурации.
Будьте осторожны при установке ограничений; чрезмерно строгие лимиты могут блокировать законных пользователей или трафик.
Учитывайте последствия ограничений на соединения для поведения приложения, особенно для сервисов с высокой активностью пользователей.