json_var

Директива `json_var` создаёт новую переменную в NGINX, которая агрегирует несколько значений в JSON-объект.

Синтаксисjson_var $variable { ... }
По умолчаниюnone
Контекстhttp
Аргументыblock (1)

Описание

Директива json_var позволяет администраторам определить блок пар ключ-значение, которые преобразуются в формат JSON. Каждая пара ключ-значение определяется внутри блока json_var, где ключ — строковый идентификатор, а значение может быть любой допустимой переменной NGINX. Это особенно полезно для возврата структурированных данных клиентам в единообразном формате, например для API-ответов. Контекст директивы ограничен блоком http, что делает её применимой для настроек на уровне сервера, но не внутри отдельных блоков server или location.

Когда директива json_var объявляется, она инициализирует внутреннюю структуру для хранения полей, указанных в её блоке. Для каждого указанного поля NGINX компилирует его в complex value, что позволяет динамически вычислять значения (например, на основе переменных запроса). После настройки полученную переменную можно использовать непосредственно в ответах NGINX, обычно в директиве return или в аналогичном контексте для вывода строки в формате JSON клиенту. Директива обрабатывает экранирование переменных по мере необходимости, гарантируя, что получаемый JSON будет корректным.

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

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

Убедитесь, что блок json_var содержит правильное количество аргументов для каждой пары ключ-значение, поскольку неправильная конфигурация может привести к ошибкам инициализации.

Будьте осторожны с именами переменных NGINX; убедитесь, что они корректно определены и действительны в пределах конфигурации NGINX.

Не забывайте экранировать значения JSON там, где это необходимо, чтобы поддерживать правильное форматирование.

← Ко всем директивам