Доброго времени суток
Сабж. Штатной возможности похоже нет.
Пытаюсь сделать через mod_security по аналогии с rate limit:
############################################################################
# modsecurity
############################################################################
SecRuleEngine On
SecAuditEngine RelevantOnly
SecAuditLog /var/cache/modsecurity/audit.log
SecDebugLog /var/cache/modsecurity/debug.log
SecDebugLogLevel 9
SecAction id:'12341',phase:1,initcol:ip=%{REMOTE_ADDR},pass,nolog
SecAction "id:'12342',phase:5,setvar:ip.somepathcounter=-1,pass,nolog"
SecRule IP:SOMEPATHCOUNTER "@gt 2" "id:'12343',phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
SecAction "id:'12344',phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
Header always set Retry-After "10" env=RATELIMITED
############################################################################
Перезапускаю апач, проверяю через apache benchmark с другого хоста:
~$ ab -c 50 -n 150 <URL>
[...]
Concurrency Level: 50
Time taken for tests: 5.256 seconds
Complete requests: 150
Failed requests: 0
Write errors: 0
[...]
В логе apache тоже нет 509 кода, только 200. В /var/cache/modsecurity/debug.log видно, что счётчик ip.somepathcounter не превышает 1:
# grep -i somepathcounter /var/cache/modsecurity/debug.log | grep Relative | cut -d ' ' -f 4- | sort | uniq -c
26 Relative change: somepathcounter=0-1
150 Relative change: somepathcounter=0+1
150 Relative change: somepathcounter=1-1
Сижу и пытаюсь понять, где я ошибся
update. nginx не предлагайте, сейчас у меня цель - научиться ограничивать запросы в самом apache