js_filter

Директива `js_filter` позволяет интегрировать JavaScript-фильтры в контекстах stream/server в NGINX.

Синтаксисjs_filter function_name;
По умолчаниюnone
Контекстstream, stream server
Аргументы1

Описание

Директива js_filter является функцией модуля JavaScript для NGINX, в первую очередь предназначенной для интеграции логики обработки на JavaScript непосредственно на стадиях обработки stream или server в NGINX. Эта директива принимает один аргумент, который обычно представляет собой JavaScript-функцию, выполняемую при получении соответствующего запроса. Цель этой функции — предоставить разработчикам гибкость для изменения данных запроса и ответа по мере их прохождения через сервер NGINX.

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

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

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

stream {
    js_filter my_js_filter;
}

server {
    listen 80;
    js_filter my_js_filter;
}

Убедитесь, что указанная JavaScript-функция правильно определена и доступна в контексте NGINX.

Код внутри JavaScript-фильтра должен избегать блокирующих операций, чтобы поддерживать производительность.

Тщательно протестируйте фильтр, чтобы предотвратить непреднамеренные изменения данных или логические ошибки.

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