IPアドレスに基づいて、単一のクライアントIPアドレスがサーバーに対して実行できる要求の数に制限を設定したいと思います。 Nginxにはlimit_req_zone
ディレクティブがあります。ただし、このディレクティブは実際にはaverageヒットを制限します。制限をrate=6r/m
に設定すると、実際には10秒ごとに1回のヒットしか許可されません。
代わりに、必要なのは1分あたりの実際の制限です。例えば。クライアントは、3つまたは4つのリクエストを次々に、または同時に実行できる必要がありますが、 1分あたり10。これを行う方法はありますか?
ああ、これは limit_req wiki の下部に記載されているnodelay
設定で実行できると思います。
バースト内で過剰な要求を遅らせる必要がない場合は、オプションnodelayを使用する必要があります:
limit_req zone=one burst=5 nodelay;