0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NGINXのlimit_req_zoneディレクティブにおけるzone値

Posted at

NGINXのlimit_req_zoneディレクティブにおけるzoneの値は、リクエストレート制限のための共有メモリゾーンを定義する部分です。このゾーンは、制限を適用するデータを保持するために使われます。

zoneの構成

zoneの値は以下の形式で指定します:

zone=<name>:<size>;
  • <name>: ゾーンの名前。識別用の任意の名前を指定します。
  • <size>: ゾーンのサイズ(メモリの容量)。共有メモリに割り当てる容量を指定します。

各パラメータの詳細

1. <name>: ゾーン名

  • 複数の制限ルールを管理する場合に、それぞれ異なるゾーン名を付けて識別します。
  • ゾーン名はユニークである必要があります。
  • 例:
    limit_req_zone $binary_remote_addr zone=my_zone:10m rate=1r/s;
    

2. <size>: ゾーンサイズ

  • ゾーンに割り当てる共有メモリの容量をバイト単位(k, m, gの接尾辞で指定可能)で定義します。
  • 必要なサイズは、制限するキーの種類と数に応じて変わります。
    • 1つのキー(たとえばIPアドレス)には約64バイトが必要。
    • したがって、10MBのゾーンは約160,000のキーを保持できます。

使用可能な変数

zoneに設定されるデータは、リクエストキー(制限の基準)に基づきます。このキーとして使用できるNGINX変数の例:

  1. $binary_remote_addr:
    • クライアントのIPアドレス(効率化のためバイナリ形式で保存)。
    • 主にIPごとのリクエスト制限に使用。
    • 例:
      limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=1r/s;
      
  2. $remote_addr:
    • クライアントのIPアドレス(テキスト形式)。
    • バイナリ形式に比べて効率が劣るため、通常は$binary_remote_addrを使用するのが推奨されます。
  3. $server_name:
    • サーバー名ごとにリクエスト制限を適用。
    • 例:
      limit_req_zone $server_name zone=server_limit:10m rate=10r/s;
      
  4. カスタムキー(複合キー):
    • 変数を組み合わせてカスタムキーを作成可能。
    • 例: IPアドレスとURIを組み合わせた制限。
      limit_req_zone $binary_remote_addr$request_uri zone=custom_limit:20m rate=5r/s;
      

メモリサイズの設定例

  • 小規模サイト:
    limit_req_zone $binary_remote_addr zone=small_site:1m rate=10r/s;
    
    • 1MBのメモリで約16,000キーを保持可能。
  • 大規模サイト:
    limit_req_zone $binary_remote_addr zone=large_site:100m rate=100r/s;
    
    • 100MBのメモリで約1,600,000キーを保持可能。

注意点

  1. メモリサイズが不足すると、新しいエントリが追加できず、既存のエントリが上書きされる可能性があります。
  2. 過剰に大きなメモリサイズを指定すると、無駄なリソース消費につながるため、トラフィック量に応じた適切なサイズを設定してください。

limit_req_zoneのゾーン設定は、トラフィック制御の基盤となるため、環境や要件に合わせた計画的な構成が重要です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?