@Alk90
php, mysql, jquery, css, html, api

Как контролировать количество запросов?

Всем привет! Подскажите, как на стороне php лучше всего контролировать количество запросов к серверу от одного пользователя.
Другими словами как определить что это не обычные запросы, а попытка аттаки или парсинг данных?
Как вариант, ограничить количество запросов в секунду с одного IP, но, например для мобильного приложения иногда необходимы 2-4 запроса в секунду, например, когда запрашивается пост, комментарии к нему и еще какой-нибудь блок информации... В общем это не изменить.
Но в тоже время, 2-4 запроса каждую секунду, вполне хватит чтобы дать хорошую нагрузку серверу...

Можно например сделать так, что в секунду можно 4 запроса, но при этом сделать дополнительное условие, при котором 40 запросов за 10 секунд - это уже не нормальное поведение?

Но это лучше чем ничего, поэтому еще вопрос... Если все же контролировать количество запросов в секунду, то где лучше хранить данные о количестве запросов за последние время с IP. В файлах, в мемкеш или где-то еще?
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
VELIK505
@VELIK505
Руководитель департамента profitcentr.com
Можно например сделать так, что в секунду можно 4 запроса, но при этом сделать дополнительное условие, при котором 40 запросов за 10 секунд - это уже не нормальное поведение?

Можно
limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;
даже в каждый локэшн можно вносить burst
limit_req zone=one burst=4; - burstкак раз и есть то что вам надо разрешает всплески до 4х. почитайте про
ngx_http_limit_req_module и ngx_http_limit_conn_module

Если на уровне nginx не подходит то можно разрулить с помощью файрвола (Csf, fail2ban).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы