模块 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 后移除。