js_body_filter

Директива `js_body_filter` позволяет фильтровать и изменять тело ответа HTTP-запросов с помощью кода JavaScript в NGINX.

Синтаксисjs_body_filter handler [options];
По умолчаниюnone
Контекстlocation, if in location, limit_except
Аргументы1-2

Описание

Директива js_body_filter является функцией модуля NGINX JavaScript, которая позволяет разработчикам динамически изменять тело HTTP-ответа с помощью JavaScript. Эта директива может быть размещена в определённых контекстах, таких как location, if in location и limit_except. Она принимает один или два аргумента: первый аргумент указывает JavaScript-функцию для вызова, а необязательный второй аргумент позволяет задавать дополнительные параметры или настройки.

Когда js_body_filter настроен, NGINX вызывает указанную JavaScript-функцию на этапе обработки ответа. Функция получает входные данные о запросе и может выполнять операции с фрагментами тела ответа до их отправки клиенту. Это даёт возможность добавлять, изменять или преобразовывать содержимое выходных данных на основе сложной логики, написанной на JavaScript.

Чтобы использовать js_body_filter, убедитесь, что в вашей конфигурации NGINX включён модуль NGINX JavaScript. Типичные сценарии применения включают динамическое форматирование JSON-ответов, фильтрацию конфиденциальной информации или добавление метаданных в тело ответа, что предоставляет мощный инструмент для кастомной обработки ответов.

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

location /api {
    js_body_filter my_js_function;
}

Убедитесь, что код JavaScript не блокирует event loop; в противном случае это может ухудшить производительность NGINX.

Будьте осторожны с размерами буферов, так как слишком большие тела ответа могут привести к проблемам с памятью.

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

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