担当した案件でNginxをリバースプロキシサーバとして利用した際にNginxにてバックエンドのサーバに流れる流量の制限を実施した際の
手法について記載する。
メインの設定ファイルであるnginx.conf内に「limit_req_zone」をhttp、server、locationディレクティブいずれかの配下に追加することにより、
設定することが可能となる。
以下の記載方法においては後段記載の内容となる。
limit_req_zone $server_name zone=one:10m rate=10r/s;
$server_nameの部分は複数のバーチャルサーバのconf記載がある場合などに利用出来る。
例えば、別々のバックエンドサーバの振り分けに置いて流量を制限したい場合などに1サーバごとの設定として制限したい場合の記載方法である。
zone=”one”の部分は、任意で名称を決めれる部分であり後述するバーチャルサーバごとのconf内でしてすることができる。
rate=10r/sの意味は秒間10リクエスト数にて制限する記載内容である。
参考にしたサイト
http://infra.hatenablog.com/entry/2014/01/27/224342
http://mogile.web.fc2.com/nginx/http/ngx_http_limit_req_module.html
基本的な設定
https://qiita.com/hclo/items/35f00b266506a707447e
全体のサンプル
https://www.nginx.com/resources/wiki/start/topics/examples/full/
nginx.confの記載例(httpディレクティブ内に以下を追記)
limit_req_zone $server_name zone=one:10m rate=10r/s;
バーチャルサーバ向けconfの記載例(locationディレクティブ内に以下を追記、上記nginx.confにて定義したzoneを指定する
limit_req zone=one burst=10 nodelay;