keyval: Модуль Nginx для хранилища ключ-значение
Установка для Debian/Ubuntu
Эти документы применяются к APT пакету nginx-module-keyval, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-keyval
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|-------------------|-------------|-----------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
Этот модуль nginx создает переменные со значениями, взятыми из пар ключ-значение.
Этот модуль вдохновлен оригинальным http_keyval_module от nginx.
Зависимость
Используется хранилище 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 секунд).