Module ngx_http_keyval_module

ngx_http_keyval_module模块(1.13.3)创建具有从API管理的键值对中获取值的变量,或者也可以通过njs设置的变量(1.15.10)。

Note

此模块可作为commercial subscription的一部分使用。

Example Configuration

http {

    keyval_zone zone=one:32k state=/var/lib/nginx/state/one.keyval;
    keyval $arg_text $text zone=one;
    ...
    server {
        ...
        location / {
            return 200 $text;
        }

        location /api {
            api write=on;
        }
    }
}

Directives

Syntax:keyval key $variable zone=name;
Default:
Context:http

创建一个新的$variable,其值由键值数据库中的key查找。匹配规则由keyval_zone指令的type参数定义。数据库存储在zone参数指定的共享内存区域中。

Syntax:keyval_zone zone=name:size [state=file] [timeout=time] [type=string|ip|prefix] [sync];
Default:
Context:http

设置保留键值数据库的共享内存区域的namesize。键值对由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参数。

Note

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