On this page
Module ngx_stream_keyval_module
ngx_stream_keyval_module
模块(1.13.7)创建的变量具有取自API管理的键值对的值。
Note
此模块可作为commercial subscription的一部分使用。
Example Configuration
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;
}
}
Directives
Syntax: | keyval key $variable zone=name; |
Default: | — |
Context: | stream |
创建一个新的$variable
,其值由键值数据库中的key
查找。匹配规则由keyval_zone指令的type参数定义。数据库存储在zone
参数指定的共享内存区域中。
Syntax: | keyval_zone zone=name:size [state=file] [timeout=time] [type=string|ip|prefix] [sync]; |
Default: | — |
Context: | stream |
设置保留键值数据库的共享内存区域的name
和size
。键值对由API管理。
可选的state
参数指定一个file
,该值将键值数据库的当前状态保持为 JSON 格式,并使其在 Nginx 重新启动后保持不变。
Examples:
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
时定义了匹配规则。
Note
索引存储在相同的共享内存区域中,因此需要额外的存储。
type=string
- 默认情况下,未启用索引;使用记录键和搜索键的完全匹配来执行变量查找
type=ip
- 搜索关键字是 IPv4 或 IPv6 地址或 CIDR 范围的文字表示;要匹配记录键,搜索键必须属于记录键指定的子网或与 IP 地址完全匹配
type=prefix
- 使用记录键和搜索键的前缀匹配(1.17.5)执行变量查找;为了与记录键匹配,记录键必须是搜索键的前缀
可选的sync
参数(1.15.0)启用共享内存区域的synchronization。同步需要设置timeout
参数。