Перейти к содержанию

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.