Ограничение нагрузки на сайт через 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 КБ/с.
Помощь
Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!