Ограничение нагрузки на сайт через Nginx

Как настроить ограничения соединений, запросов и скорости передачи данных в Nginx.

Nginx предоставляет гибкие инструменты для управления нагрузкой — вы можете ограничить количество одновременных соединений, частоту запросов и скорость отдачи данных клиенту. Все настройки вносятся в конфигурационный файл Nginx.

1. Ограничение количества соединений

Сначала в секции http с помощью директивы limit_conn_zone определите ключ и параметры зоны разделяемой памяти для хранения состояний:

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
}

Затем в нужном блоке location укажите имя зоны и максимально допустимое количество соединений с одного IP:

location /download/ {
    limit_conn conn_limit_per_ip 5;
}

2. Ограничение количества запросов за единицу времени

В секции http с помощью директивы limit_req_zone задайте зону и допустимую частоту запросов:

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
}

В блоке location укажите имя зоны и максимальный размер всплеска запросов (burst):

location /download/ {
    limit_req zone=req_limit_per_ip burst=10;
}

3. Ограничение скорости передачи данных клиенту

Директива limit_rate задаёт максимальную скорость отдачи ответа в байтах в секунду на одно соединение. Важно учитывать: если клиент использует два соединения одновременно, суммарная скорость будет вдвое выше лимита.

location /download/ {
    limit_rate 50k;
}

Директива limit_rate_after позволяет отдать первые N данных без ограничений, и только после этого применить лимит скорости:

location /download/ {
    limit_rate_after 1m;
    limit_rate 50k;
}

В примере выше первый мегабайт передаётся на полной скорости, после чего скорость ограничивается до 50 КБ/с.

Помощь

Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!

Обновлено:
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам