0

我想限制来自一个客户端的 HTTP::request 速率,下面是我的 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 显示“连接重置”。

为什么它不起作用?哪里错了?谢谢

4

1 回答 1

0

此规则不应导致连接重置,因此我怀疑该站点还有其他问题。也就是说,它也不会做你想做的事。[clock seconds] 永远不会等于 $cur_time 因为您在使用它之前没有为 $cur_time 赋值。

您应该能够在 F5 的网站上调整速率限制规则的一个很好的示例:
https
://devcentral.f5.com/login?returnurl=%2fWiki%2fiRules.RateLimit_HTTPRequest.ashx (阅读文章需要免费帐户。 )

于 2014-08-30T22:11:19.493 回答