js_access
Директива js_access позволяет использовать пользовательский JavaScript для управления контролем доступа в stream-контекстах NGINX.
Описание
Директива js_access является частью модуля NGINX JavaScript, который позволяет использовать JavaScript для различных операций в конфигурациях NGINX. В частности, в контексте модуля stream эта директива позволяет указать JavaScript-функцию, которая будет вызываться для определения правил доступа к сетевым соединениям. Это облегчает реализацию сложных правил доступа, выходящих за рамки стандартных параметров конфигурации, используя гибкость и выразительность JavaScript.
Эта директива принимает один аргумент: имя JavaScript-функции, которая будет обрабатывать логику доступа. Когда устанавливается клиентское соединение, NGINX вызовет указанную JavaScript-функцию, передав детали соединения, которые можно использовать для принятия решений во время выполнения о разрешении или отказе в доступе. Гибкость JavaScript позволяет работать с различными параметрами и реализовывать сложную логику, например проверку IP-адресов по динамическому списку, интеграцию с внешними сервисами или применение ограничения скорости.
Эффективное использование js_access требует хорошего понимания как модели событий NGINX, так и среды выполнения JavaScript, предоставляемой модулем NJS. Важно, чтобы JavaScript-код был неблокирующим для поддержания высокой производительности и масштабируемости при обработке входящих соединений.
Пример конфига
stream {
js_access my_access_function;
server {
listen 12345;
proxy_pass backend_servers;
}
}Убедитесь, что JavaScript-функция определена и правильно загружена до того, как на неё ссылаются в конфигурации.
Производительность может пострадать, если JavaScript-функция содержит блокирующие операции или долго выполняющуюся логику.
Отладка ошибок JavaScript может потребовать дополнительной настройки логирования, чтобы захватывать ошибки, возвращаемые функцией.