Module ngx_http_keyval_module
設定例 ディレクティブ keyval keyval_zone |
ngx_http_keyval_module
モジュール (1.13.3) は、APIまたはnjsを使っても設定できる変数(1.15.10)によって管理されるキー-値ペアから取られた値を使って変数を作成します。
このモジュールは商用許可の一部として利用可能です。
設定例
http { keyval_zone zone=one:32k state=/var/lib/nginx/state/one.keyval; keyval $arg_text $text zone=one; ... server { ... location / { return 200 $text; } location /api { api write=on; } } }
ディレクティブ
構文: |
keyval
|
---|---|
デフォルト: | - |
コンテキスト: |
http |
値がキー-値データベース内のkey
によって検索される新しい$variable
を作成します。マッチングルールはkeyval_zone
ディレクティブのtype
パラメータを使って定義されます。データベースはzone
パラメータによって指定される共有メモリ領域に格納されます。
構文: |
keyval_zone
|
---|---|
デフォルト: | - |
コンテキスト: |
http |
キー-値データベースを保持する共有メモリ領域のname
と size
を設定します。キー-値ペアは APIによって管理されます。
任意のstate
パラメータは、JSON形式でキー-値データベースの現在の状態を保持し、nginxの再起動を超えて永続化するfile
を指定します。ファイルの内容を直接変更することは避けなければなりません。
例:
keyval_zone zone=one:32k state=/var/lib/nginx/state/one.keyval; # path for Linux keyval_zone zone=one:32k state=/var/db/nginx/state/one.keyval; # path for FreeBSD
オプションのtimeout
パラメータ(1.15.0)は、key-valueペアがゾーンから削除されるまでの時間を設定します。
オプションのtype
パラメータ(1.17.1)は、特定の型のキーのマッチングに最適化された追加のインデックスをアクティブにし、keyval $variable
を評価する時のマッチングルールを定義します。
インデックスは同じ共有メモリゾーンに格納されます。従って追加のストレージを必要とします。
type=string
- デフォルトでは、インデックスは無効です; 変数の検索は、レコードキーと検索キーの完全一致を使って実行されます
type=ip
- 検索キーは、IPv4またはIPv6アドレスまたはCIDR範囲のテキスト表現です; レコードキーと一致するには、検索キーはレコードキーで指定されたサブネットに所属しているか、IPアドレスに完全に一致する必要があります。
type=prefix
- 変数の検索は、レコードキーと検索キーの前方一致を使って実行されます (1.17.5); レコードキーと一致するには、レコードキーは検索キーのプリフィックスである必要があります
オプションのsync
パラメータ (1.15.0) は共有されたメモリ領域のsynchronization を有効にします。同期には、timeout
パラメータを設定する必要があります。
同期が有効な場合、key-valueペア(1つあるいは全てに関係なく)の削除は、目的のクラスタノードでのみ実行されます。他のクラスタノード上の同じkey-valueペアはタイムアウト
時に削除されます。