Почему мои iRules на BIG-IP 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 показывает «сброс соединения».

почему это не работает? где не так? Спасибо


person rrFeng    schedule 19.08.2014    source источник


Ответы (1)


Это правило не должно вызывать сброс соединения, поэтому я подозреваю, что с сайтом происходит что-то еще. Тем не менее, он не собирается делать то, что вы хотите. [часы в секундах] никогда не будут равны $cur_time, так как вы не присвоили значение $cur_time перед его использованием.

Есть хороший пример правила ограничения скорости, которое вы можете адаптировать на сайте F5. :
https://devcentral.f5.com/login?returnurl=%2fWiki%2fiRules.RateLimit_HTTPRequest.ashx
(Для чтения статьи требуется бесплатная учетная запись.)

person Jonathan Scholis    schedule 30.08.2014