ngx_http_keyval_module 模組

範例配置
指令
     keyval
     keyval_zone

ngx_http_keyval_module 模組(1.13.3)會建立變數,其值取自 API 或變數(1.15.10)管理的鍵值對,該變數也可以使用 njs 設定。

此模組是我們商業訂閱的一部分。

範例配置

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 參數指定一個 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 時移除。