为什么我在BIG-IP F5上的iRule不起作用?

时间:2014-08-19 01:41:29

标签: http web load-balancing f5

我想限制来自一个客户端的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显示“连接重置”。

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

1 个答案:

答案 0 :(得分:0)

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

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