我想限制来自一个客户端的HTTP::请求速率,下面是我的iRules:
when HTTP_REQUEST {
if { [HTTP::uri] == "/user/loginPub.jsp" } {
if { [clock seconds] == $cur_time } {
if { $req_count > 1 } {
HTTP::respond 501 content "request blocked."
}
incr req_count
return
}
set req_count 0
set cur_time [clock seconds]
}
}但是当我将其应用于虚拟服务器时,带有该uri (/user/loginPub.jsp)的请求被重置。Chrome显示“连接重置”。
为什么它不起作用?哪里错了?谢谢
发布于 2014-08-31 06:11:19
此规则不应导致连接重置,因此我怀疑该站点存在其他问题。也就是说,它也不会做你想要的事情。时钟秒永远不会等于$cur_time,因为在使用它之前没有给$cur_time赋值。
有一个很好的例子,你应该能够适应F5的网站上的速率限制规则:
https://devcentral.f5.com/login?returnurl=%2fWiki%2fiRules.RateLimit_HTTPRequest.ashx
(阅读这篇文章需要免费帐户。)
https://stackoverflow.com/questions/25374464
复制相似问题