json_var
Директива `json_var` создаёт новую переменную в NGINX, которая агрегирует несколько значений в JSON-объект.
Описание
Директива 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 там, где это необходимо, чтобы поддерживать правильное форматирование.