模块 ngx_stream_keyval_module
示例配置 指令 keyval keyval_zone |
模块 ngx_stream_keyval_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; } }
指令
语法: | keyval |
---|---|
默认: | — |
上下文: | stream |
创建一个新的 $variable
,其值是键值数据库中由 key
查找到的。匹配规则由 keyval_zone
指令的 type
参数定义。数据库存储在由 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
- 默认情况下,不启用索引;使用记录键和搜索键的精确匹配进行变量查找
-
type=ip
- 搜索键是IPv4或IPv6地址或CIDR范围的文本表示;要匹配记录键,搜索键必须属于记录键指定的子网或与IP地址完全匹配
-
type=prefix
- 使用记录键和搜索键的前缀匹配进行变量查找(1.17.5);要匹配记录键,记录键必须是搜索键的前缀
可选的sync
参数(1.15.0)启用同步共享内存区域。同步需要设置timeout
参数。
如果启用了同步,仅在目标集群节点上执行键值对的移除(无论是一个还是全部)。其他集群节点上的相同键值对将在timeout
后被移除。