keyval: Модуль Nginx для хранения пар "ключ-значение"
Установка
Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-keyval
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-keyval
Включите модуль, добавив следующее в начало файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_keyval_module.so;
Этот документ описывает nginx-module-keyval v0.3.0, выпущенный 31 марта 2024 года.
Этот модуль nginx создает переменные со значениями, взятыми из пар "ключ-значение".
Этот модуль сильно вдохновлен оригинальным модулем nginx http_keyval_module.
Зависимость
Использует хранилище Redis.
Docker
$ docker build -t nginx-keyval .
$ : "app.conf: Создайте конфигурацию nginx"
$ docker run -p 80:80 -v $PWD/app.conf:/etc/nginx/http.d/default.conf nginx-keyval
Пакет GitHub: ghcr.io/kjdev/nginx-keyval
Конфигурация: ngx_http_keyval_module
Пример
http {
keyval_zone zone=one:32k;
keyval $arg_text $text zone=one;
...
server {
...
location / {
return 200 $text;
}
}
}
Директивы
Синтаксис: keyval key $variable zone=name;
По умолчанию: -
Контекст: http
Создает новую $variable, значение которой ищется по key в базе данных "ключ-значение".
База данных хранится в общей памяти или Redis, как указано параметром zone.
В key вы можете использовать комбинацию переменных и текста или только переменные.
Например: -
$remote_addr:$http_user_agent-'$remote_addr $http_user_agent $host "случайный текст"'
Синтаксис: keyval_zone zone=name:size [timeout=time] [ttl=time];
По умолчанию: -
Контекст: http
Устанавливает name и size зоны общей памяти, которая хранит базу данных "ключ-значение".
Необязательный параметр timeout или ttl устанавливает время жизни, после которого пары "ключ-значение" удаляются (значение по умолчанию — 0 секунд).
Синтаксис: keyval_zone_redis zone=name [hostname=name] [port=number] [database=number] [connect_timeout=time] [ttl=time];
По умолчанию: -
Контекст: http
Использует хранилище Redis
Устанавливает name зоны Redis, которая хранит базу данных "ключ-значение".
Необязательный параметр hostname устанавливает имя хоста Redis (значение по умолчанию — 127.0.0.1).
Необязательный параметр port устанавливает порт Redis (значение по умолчанию — 6379).
Необязательный параметр database устанавливает номер базы данных Redis (значение по умолчанию — 0).
Необязательный параметр connect_timeout устанавливает тайм-аут подключения к Redis в секундах (значение по умолчанию — 3).
Необязательный параметр ttl устанавливает время жизни, после которого пары "ключ-значение" удаляются (значение по умолчанию — 0 секунд).
Конфигурация: ngx_stream_keyval_module
Пример
stream {
keyval_zone zone=one:32k;
keyval $ssl_server_name $name zone=one;
server {
listen 12345 ssl;
proxy_pass $name;
ssl_certificate /usr/share/nginx/conf/cert.pem;
ssl_certificate_key /usr/share/nginx/conf/cert.key;
}
}
Директивы
Синтаксис: keyval key $variable zone=name;
По умолчанию: -
Контекст: http
Создает новую $variable, значение которой ищется по key в базе данных "ключ-значение".
База данных хранится в общей памяти или Redis, как указано параметром zone.
Синтаксис: keyval_zone zone=name:size [timeout=time] [ttl=time];
По умолчанию: -
Контекст: http
Устанавливает name и size зоны общей памяти, которая хранит базу данных "ключ-значение".
Необязательный параметр timeout или ttl устанавливает время жизни, после которого пары "ключ-значение" удаляются (значение по умолчанию — 0 секунд).
Синтаксис: keyval_zone_redis zone=name [hostname=name] [port=number] [database=number] [connect_timeout=time] [ttl=time];
По умолчанию: -
Контекст: http
Использует хранилище Redis
Устанавливает name зоны Redis, которая хранит базу данных "ключ-значение".
Необязательный параметр hostname устанавливает имя хоста Redis (значение по умолчанию — 127.0.0.1).
Необязательный параметр port устанавливает порт Redis (значение по умолчанию — 6379).
Необязательный параметр database устанавливает номер базы данных Redis (значение по умолчанию — 0).
Необязательный параметр connect_timeout устанавливает тайм-аут подключения к Redis в секундах (значение по умолчанию — 3).
Необязательный параметр ttl устанавливает время жизни, после которого пары "ключ-значение" удаляются (значение по умолчанию — 0 секунд).
Пример
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-keyval.