js_body_filter
Директива `js_body_filter` позволяет фильтровать и изменять тело ответа HTTP-запросов с помощью кода JavaScript в NGINX.
Описание
Директива 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 обрабатывает все возможные варианты входных данных, чтобы избежать ошибок времени выполнения.