Nginxでリクエスト数を制限する方法

Nginxで特定のURLのアクセス数を制限したかったので、設定しました。

Nginxで特定のPHPのアクセス数を絞る設定

nginx.confやVirtualHostの設定中で次の定義を行います。

limit_req_zone で定義を作る(ここは定義するだけ)

# limit req
limit_req_zone $binary_remote_addr zone=limit_req:10m rate=20r/m;
limit_req_log_level error;
limit_req_status 503;
  • limit_reqというzoneを定義。

  • remote_addr毎に、1分間に20リクエストまでに制限する。

  • $binary_remote_addr はremote_addrの4バイト表現。

  • rate=20r/mは20request per minute.

limit_req で制限する

location文でlimit_reqを記述し、先に宣言したlimit_req_zone定義を利用する。

location /search/  {
  limit_req zone=limit_req burst=2;
}
  • このlocationでlimit_reqを発動する。

  • burst=2は制限に達したリクエストを遅延させる個数設定。 この数以上の制限オーバーリクエストはエラーになる。

参考