モジュール 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 key $variable zone=name;
既定
コンテキスト http

$variableを作成します。その値はキーバリューデータベースのkeyによって検索されます。照合ルールはtypeパラメータのkeyval_zone指令によって定義されます。データベースはzoneパラメータで指定された共有メモリに格納されます。

構文 keyval_zone zone=name:size [state=file] [timeout=time] [type=string|ip|prefix] [sync];
既定
コンテキスト http

キーバリューデータベースを保持する共有メモリのnamesizeを設定します。キーバリューペアはAPIによって管理されます。

オプションのstateパラメータはキーバリューデータベースの現在の状態をJSON形式で保持しているfileを指定し、nginxの再起動をまたがっても永続的にします。ファイルの内容を直接変更することは避けるべきです。

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)はキーバリューペアがゾーンから削除される時間を設定します。

オプションのtypeパラメータ(1.17.1)は特定のタイプのキーに一致するように最適化された追加索引を有効にし、keyval $variableを評価する際の照合ルールを定義します。

インデックスは同じ共有メモリゾーンに格納されるので、追加のストレージが必要です。

type=string
既定、インデックスは有効になっていません。変数の検索はレコードキーと検索キーの完全一致を使用して実行されます。
type=ip
検索キーはIPv4またはIPv6アドレスやCIDRレンジのテキスト表現です。レコードキーに一致するためには検索キーはレコードキーによって指定されたサブネットに属すか、IPアドレスと完全に一致しなければなりません。
type=prefix
変数の検索はレコードキーと検索キーのプレフィックス一致を使用して実行されます(1.17.5)。レコードキーに一致するためには、レコードキーは検索キーのプレフィックスでなければなりません。

オプションのsyncパラメータ(1.15.0)は共有メモリの同期を有効にします。同期にはtimeoutパラメータを設定する必要があります。

同期が有効であれば、キーバリューペアの削除(関係なく1つでもすべてでも)はターゲットクラスタノードに対してのみ実行されます。他のクラスタノードの同じキーバリューペアはtimeoutで削除されます。