モジュール ngx_stream_keyval_module

例の設定
ディレクティブ
     keyval
     keyval_zone

ngx_stream_keyval_moduleモジュール(1.13.7)は、APIまたはnjsでも設定できる変数によって管理されるキーと値のペアから取得された値を持つ変数を作成します。

このモジュールは、商用サブスクリプションの一部として利用できます。

例の設定

http {

    server {
        ...
        location /api {
            api write=on;
        }
    }
}

stream {

    keyval_zone zone=one:32k state=/var/lib/nginx/state/one.keyval;
    keyval      $ssl_server_name $name zone=one;

    server {
        listen              12345 ssl;
        proxy_pass          $name;
        ssl_certificate     /usr/local/nginx/conf/cert.pem;
        ssl_certificate_key /usr/local/nginx/conf/cert.key;
    }
}

ディレクティブ

構文 keyval key $variable zone=name;
デフォルト
コンテキスト stream

keyによってキーバリューデータベースの中で検索することで、値が$variableなる新しいものを生成します。照合ルールはtypeパラメーターのkeyval_zoneディレクティブによって定義されます。データベースはzoneパラメーターによって指定された共有メモリー領域に格納されます。

構文 keyval_zone zone=name:size [state=file] [timeout=time] [type=string|ip|prefix] [sync];
デフォルト
コンテキスト stream

キーバリューデータベースを格納した共有メモリー領域の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パラメーターを設定する必要があります。

同期が有効になっている場合、キーバリューペアの削除(単一のものであれすべてのものであれ)は、ターゲットのクラスタノードだけで実行されます。他のクラスタノードの同じキーバリューペアはtimeout時に削除されます。