Главная  /  Помощь  /  Сайт тормозит от наплыва запросов

Сайт тормозит от наплыва запросов

Что делать, если к сайту идёт слишком много запросов: найти, кто их шлёт, заблокировать адрес и ограничить частоту в nginx.

Содержание

Бывает, что сайт вдруг тормозит, а в журнале — очень много запросов, тысячи в минуту. Часто это не злой умысел, а слишком жадный робот, который выкачивает сайт. Действовать в любом случае нужно одинаково: понять, кто шлёт запросы, и ограничить его.

Кто шлёт запросы

# самые активные адреса
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head

# самые активные программы (роботы подписываются здесь)
sudo awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head

Для Apache журнал — /var/log/apache2/access.log (Ubuntu, Debian) или /var/log/httpd/access_log (AlmaLinux).

Заблокировать адрес

# ufw (Ubuntu, Debian)
sudo ufw insert 1 deny from 203.0.113.5

# nginx — в блоке server или http
deny 203.0.113.5;

В nginx после правки — sudo nginx -t && sudo systemctl reload nginx. Во FreeBSD — таблица в pf: в /etc/pf.conf строки table <blocked> persist и block in quick from <blocked>, затем адрес добавляется командой sudo pfctl -t blocked -T add 203.0.113.5.

Ограничить частоту запросов

Чтобы один адрес не мог слать больше 10 запросов в секунду, в nginx:

http {
    limit_req_zone $binary_remote_addr zone=perreq:10m rate=10r/s;
    limit_req_status 429;

    server {
        location / {
            limit_req zone=perreq burst=20 nodelay;
            # ...
        }
    }
}

burst=20 разрешает короткие всплески — браузер грузит страницу пачкой запросов. Ограничить число одновременных подключений с адреса — в отдельной статье.

Роботы

Ненужного робота можно не пускать по названию, которое видно во втором списке выше, — строкой в блоке server nginx:

if ($http_user_agent ~* (BadBot|OtherBot)) { return 403; }

Поисковики не блокируйте: Яндекс скорость обхода сайта позволяет задать в Вебмастере.

Если сервер не отвечает вовсе — даже по SSH, — войдите через консоль в кабинете и напишите в поддержку: посмотрим, что приходит на сервер.

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

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

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