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 |
|---|---|
| 默认值 | — |
| 上下文 |
http |
创建一个新的 $variable,其值在键值数据库中根据 key 进行查找。匹配规则由 keyval_zone 指令的 type 参数定义。数据库存储在由 zone 参数指定的共享内存区域中。
| 语法 |
keyval_zone |
|---|---|
| 默认值 | — |
| 上下文 |
http |
设置保存键值数据库的共享内存区域的 name 和 size。键值对由 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 后移除。