хочет ограничить количество запросов api от клиентов. интересно, есть ли способ сделать это с помощью apache или мне нужно написать код
Я бы не стал делать это в apache .. Я бы сделал это на сетевом уровне с помощью iptables.
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 86400 --hitcount 100 -j REJECT
Измените 86400 на количество секунд, в течение которых вы хотите сохранить блок (86400 - 1 день), а 100 - это количество обращений, то есть сколько вы готовы разрешить для каждого IP-адреса.
Вы также можете изменить -j REJECT на -j DROP, который определяет поведение пакета при выполнении условия. DROP плавно отбрасывает пакеты, а REJECT возвращает «порт недоступен» или аналогичную ошибку.
Тем не менее, был mod_throttle, который делал бы что-то подобное, но я не могу найти много информации о нем. Я думаю, что лучше делать такие вещи на уровне сети / ядра, а не в apache. Apache хорошо обслуживает запросы. Позвольте ему делать то, что у него лучше всего, и не обременяйте его отслеживанием соединений.
(да, я только что скопировал свой ответ на предыдущий вопрос ..)