HttpLimitReqModuleJa

インストール | モジュール |  アドオン |  設定 |  コミュニティ |  その他の情報源 = 概要 =

This module allows you to limit the number of requests for a given session, or as a special case, with one address.

Restriction done using leaky bucket.

= 設定例 =

http { limit_req_zone $binary_remote_addr  zone=one:10m   rate=1r/s;

...

server {

...

location /search/ { limit_req  zone=one  burst=5; }

= ディレクティブ =

limit_req


このディレクティブはゾーン (zone) とバースト時の最大リクエスト数 (burst) を指定します. ゾーン側で定義した頻度を超過した場合リクエストは遅延するため、結果として処理が意図した頻度で行われます. 過剰なリクエストが発生した場合、リクエスト数が burst で指定した数以下であれば遅延させます. 待機中のリクエスト数が burst の数値を超過した場合、リクエストはコード 503 "Service Temporarily Unavailable" で完了します. デフォルトで、burst は 0 です.

以下に設定例を掲載します: limit_req_zone $binary_remote_addr  zone=one:10m   rate=1r/s;

server { location /search/ { limit_req  zone=one  burst=5; }

この例では、平均して 1 秒 1 リクエスト以上を行うユーザを許可しません. バースト時は 5 リクエストまでを許可します.

バースト時に過剰なリクエストを遅延させる必要がない場合は、nodelay オプションを使用することができます:

limit_req  zone=one  burst=5  nodelay;

limit_req_log_level


Controls the log level of the rejected requests. Delayed requests are logged at the next less severe level, though, for example when limit_req_log_level is set to "error", delayed requests are logged at "warn".

limit_req_zone


The directive describes the area, which stores the state of the sessions. The values of the sessions is determined by the given variable. Example of usage:

limit_req_zone $binary_remote_addr  zone=one:10m   rate=1r/s;

In this case, the session state is allocated 10MB as a zone called "one", and the average speed of queries for this zone is limited to 1 request per second.

The sessions are tracked per-user in this case, but note that instead of the variable $remote_addr, we've used the variable $binary_remote_addr, reducing the size of the state to 64 bytes. A 1 MB zone can hold approximately 16000 states of this size.

The speed is set in requests per second or requests per minute. The rate must be an integer, so if you need to specify less than one request per second, say, one request every two seconds, you would specify it as "30r/m".

= References =

Original Documentation