模块 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
时被删除。