我尝试为Apache配置modsecurity以限制每单位时间对同一资源的请求数:每个资源每秒10次点击,无论请求是哪个IP地址。希望不要阻止额外的呼叫,而是重定向到给定的页面。
我包含了模块并在httpd.conf中放置了下一个代码:
<LocationMatch "(.*)\.dimg(.*)">
SecDebugLogLevel 9
SecAction phase:2,initcol:resource=%{REQUEST_URI},pass,nolog,id:132
SecRule RESOURCE:COUNT "@gt 10" "phase:2,pause:300,deny,status:503,setenv:RATELIMITED,skip:1,nolog,id:102"
SecAction "phase:2,setvar:resource.count=+1,pass,nolog,id:103"
SecAction "phase:5,deprecatevar:resource.count=10/1,pass,nolog,id:104"
Header always set Retry-After "10" env=RATELIMITED
ErrorDocument 503 "Service Unavailable"
然后我运行压力测试来模拟高负荷。 但是额外的请求不会被阻止。 来自日志: 记录的原始集合变量:resource.count =&#34; 0&#34;
结果SecRule RESOURCE:COUNT&#34; @gt 10&#34;对于任何请求都返回false。
这里有什么问题?