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

json-var: Модуль JSON переменных NGINX

Установка Debian/Ubuntu

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

  1. Настройте APT репозиторий, как описано в настройке APT репозитория.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-json-var
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия            | Компонент   | Архитектуры    |
|-------------|-------------------|-------------|-----------------|
| 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    |

Конфигурация

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"
}