Главная  /  Помощь  /  Nginx: ограничить число подключений с одного IP

Nginx: ограничить число подключений с одного IP

Как настроить limit_conn_zone и limit_conn, чтобы один адрес не занимал все соединения сервера.

Чтобы один адрес не занимал все соединения сервера — например, агрессивный парсер или простая атака, — в nginx ограничивают число одновременных подключений с одного IP. Нужный модуль входит в обычную сборку nginx.

http {
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_status 429;

    server {
        # ...
        limit_conn perip 10;
    }
}
  • limit_conn_zone — память для счётчиков, задаётся в блоке http. 10 МБ хватает больше чем на 100 тысяч адресов.
  • limit_conn perip 10 — не больше 10 одновременных подключений с адреса. Можно задать в http, server или location.
  • limit_conn_status 429 — код ответа сверх предела (по умолчанию 503).

Проверьте настройку и примените её без остановки сайта:

sudo nginx -t && sudo systemctl reload nginx

Не ставьте слишком маленький предел: браузер открывает к сайту несколько соединений сразу, а за одним адресом может работать целый офис. Ограничить частоту запросов, а не число соединений, можно модулем limit_req.

В старых инструкциях встречается директива limit_zone — её убрали из nginx в версии 1.7.6, вместо неё limit_conn_zone. Подробнее — в документации nginx.

Не нашли ответ? Напишите в поддержку — подскажем.

Контакты (495) 664-22-98 или Написать нам

© 2026 Транзит Телеком · Все права защищены