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

keyval: Модуль Nginx для хранилища ключ-значение

Установка для Debian/Ubuntu

Эти документы применяются к APT пакету nginx-module-keyval, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT репозиторий, как описано в настройке APT репозитория.
  2. Установите модуль:
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 секунд).

Пример