Есть ли что-то, что я могу использовать, чтобы установить правила для Apache для регулирования временно или игнорировать любой IP-адрес, который делает X запросов в секунду?
Было бы здорово, если бы для этого был модуль Apache. Я смотрел на mod_bandwidth
и mod_limitipconn
но похоже, что они основаны на пропускной способности, которую мне очень сложно определить с точки зрения количества запросов на IP.
Я был бы счастлив использовать что-то внешнее по отношению к Apache, которое будет работать на стандартном сервере Linux (Fedora или CentOS).
iptables
имеет модули ограничения скорости и соединения:
iptables -I INPUT -m limit --limit X/second -p tcp --dport 80 --syn -j ACCEPT
Обратите внимание, что на самом деле это не ограничивает количество HTTP Запросы; он ограничит количество TCP-соединений, которое может не соответствовать количеству HTTP-запросов, если браузер использует поддержку активности. Также обратите внимание, что большинство браузеров будет выполнять большое количество параллельных подключений; вы можете захотеть использовать --limit-burst
возможность убедиться, что пользователи не блокируются таким поведением.