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

建立一個新的 $variable,其值會透過在鍵值資料庫中尋找 key 來取得。比對規則由 keyval_zone 指令的 type 參數定義。資料庫儲存在由 zone 參數指定的共享記憶體區域中。

語法 keyval_zone zone=name:size [state=file] [timeout=time] [type=string|ip|prefix] [sync];
預設
上下文 stream

設定共享記憶體區域的 namesize,該區域會保存鍵值資料庫。鍵值對由 API 管理。

可選的 state 參數指定一個 file,該檔案以 JSON 格式保存鍵值資料庫的目前狀態,並使其在 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 後移除。