Модуль ngx_stream_keyval_module
Модуль 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
key
$variable
zone=name; |
|---|---|
| По умолчанию: | — |
| Контекст: | stream |
Создаёт новую $variable, значение которой ищется по key в базе данных ключ-значение. Правила соответствия определяются параметром type директивы keyval_zone. База данных хранится в области общей памяти, указанной параметром zone.
| Синтаксис: | keyval_zone
zone=name:size
[state=file]
[timeout=time]
[type=string|ip|prefix]
[sync]; |
|---|---|
| По умолчанию: | — |
| Контекст: | 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.
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/stream/ngx_stream_keyval_module.html