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

json-var: Модуль JSON переменных для 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-json-var
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-json-var

Включите модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:

load_module modules/ngx_http_json_var_module.so;

Этот документ описывает nginx-module-json-var v1.1, выпущенный 11 февраля 2022 года.


json_var

  • синтаксис: json_var $variable { ... }
  • по умолчанию: none
  • контекст: http

Создает новую переменную, значение которой является json, содержащим элементы, перечисленные в блоке. Параметры внутри блока json_var указывают поля, которые должны быть включены в результирующий json. Каждый параметр должен содержать два аргумента - ключ и значение. Значение может содержать переменные nginx.

Пример конфигурации

http {
    json_var $output {
        timestamp $time_local;
        remoteAddr $remote_addr;
        xForwardedFor $http_x_forwarded_for;
        userAgent $http_user_agent;
        params $args;
    }

    server {
        location /get_json/ {
            return 200 $output;
        }
    }
Запрос по адресу http://domain/get_json/?key1=value1&key2=value2 может вернуть json, подобный этому:
{
    "timestamp": "21/Jul/2017:12:44:18 -0400",
    "remoteAddr": "127.0.0.1",
    "xForwardedFor": "",
    "userAgent": "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3",
    "params": "key1=value1&key2=value2"
}

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-json-var.