模块 ngx_stream_keyval_module
示例Directives keyval keyval_zone |
这ngx_stream_keyval_module
module (1.13.7) 创建变量
其值取自 API 管理的键值对或也可以使用 njs 设置的变量。
此模块作为我们商业订阅的一部分提供。
示例配置
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
语法: |
keyval
|
---|---|
默认值: | — |
上下文: |
stream |
创建一个新的$variable
其值
由key
在 key-value 数据库中。
匹配规则由type
参数的keyval_zone
命令。
数据库存储在共享内存区域中
由zone
参数。
语法: |
keyval_zone
|
---|---|
默认值: | — |
上下文: |
stream |
设置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
- default,则不启用索引; 使用 Exact Match 执行变量查找 记录键和搜索键
type=ip
- 搜索键是 IPv4 或 IPv6 地址的文本表示形式 或 CIDR 范围; 要匹配记录键,搜索键必须属于子网 由记录键指定或与 IP 地址完全匹配
type=prefix
- 使用 prefix match 执行变量查找 记录键和搜索键 (1.17.5); 要匹配记录键,记录键必须是搜索键的前缀
可选的sync
参数 (1.15.0) 启用共享内存区域的同步。
同步需要timeout
参数。
如果启用了同步,则删除键值对(无论是一个还是所有键值对)
将仅在目标集群节点上执行。
其他集群节点上的相同键值对
将在timeout
.