模块 ngx_stream_keyval_module


示例Directives
keyval
keyval_zone

模块 (1.13.7) 创建变量 其值取自 API 管理的键值对或也可以使用 njs 设置的变量。ngx_stream_keyval_module

此模块作为我们商业订阅的一部分提供。

示例配置

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 key $variable zone=name;
默认值:
上下文: stream

创建一个新的值 由 键值数据库中的 查找。 匹配规则由 keyval_zone Directives的 type 参数定义。 数据库存储在共享内存区域中 由 parameter 指定。$variablekeyzone

语法: keyval_zone zone=name:size [state=file] [timeout=time] [type=string|ip|prefix] [sync];
默认值:
上下文: stream

设置共享内存区域的 和 ,这将保留键值数据库。 键值对由 API 管理。namesize

可选参数指定 a 以 JSON 格式保持键值数据库的当前状态 并使其在 nginx 重启后持久存在。 应避免直接更改文件内容。statefile

例子:

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

可选参数 (1.15.0) 设置 从区域中删除键值对的时间。timeout

可选参数 (1.17.1) 激活 为匹配特定类型的键而优化的额外索引 并在评估时定义匹配规则 一个 keyval .type$variable

索引存储在同一个共享内存区中 因此需要额外的存储空间。

type=string
default,则不启用索引; 使用 Exact Match 执行变量查找 记录键和搜索键
type=ip
搜索键是 IPv4 或 IPv6 地址的文本表示形式 或 CIDR 范围; 要匹配记录键,搜索键必须属于子网 由记录键指定或与 IP 地址完全匹配
type=prefix
使用 prefix match 执行变量查找 记录键和搜索键 (1.17.5); 要匹配记录键,记录键必须是搜索键的前缀

可选参数 (1.15.0) 启用共享内存区域的同步。 同步需要设置参数。synctimeout

如果启用了同步,则删除键值对(无论是一个还是所有键值对) 将仅在目标集群节点上执行。 其他集群节点上的相同键值对 将在 时删除。timeout