0

1 つのクライアントからの 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 に答える