模块 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 |
|---|---|
| 默认值: | — |
| 上下文: | http |
创建一个新的 $variable,其值是从键值数据库中查找 key 获取的。匹配规则由 keyval_zone 指令的 type 参数定义。数据库存储在由 zone 参数指定的共享内存区中。
| 语法: | keyval_zone |
|---|---|
| 默认值: | — |
| 上下文: | http |
设置保存键值数据库的共享内存区的 name 和 size。键值对由 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 时定义匹配规则。
索引存储在相同的共享内存区中,因此需要额外的存储空间。
-
类型=字符串 - 默认情况下,未启用索引;使用记录键的精确匹配和搜索键进行变量查找
-
类型=IP - 搜索键是IPv4或IPv6地址或CIDR范围的文本表示;为了匹配记录键,搜索键必须属于记录键指定的子网或完全匹配一个IP地址
-
类型=前缀 - 使用记录键和搜索键的前缀匹配执行变量查找(1.17.5);为了匹配记录键,记录键必须是搜索键的前缀
可选的sync参数(1.15.0)启用了共享内存区的同步。同步需要设置timeout参数。
如果启用了同步,将仅在目标集群节点上执行键值对的删除(无论是单个还是全部)。其他集群节点上的相同键值对将在timeout后删除。
