Языки программирования

Расширение NGINX с помощью нового модуля JavaScript

Расширение NGINX с помощью нового модуля JavaScript

Внедряйте функциональность промежуточного ПО в NGINX с помощью выразительных возможностей Javascript. NGINX JavaScript или сокращенно NJS - это динамический модуль, с помощью которого вы можете использовать скрипты для подключения к модели выполнения NGINX.

Это означает, что с помощью модуля NJS вы можете:

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

Например, вы можете написать файл hello.js, который перехватывает входящий запрос и возвращает сообщение клиенту:

function hello(r) {
r. return(200, «Hello world! »);
}

export default {hello}

Чтобы импортировать файл JavaScript и выполнить функцию при определенных обстоятельствах, вы изменяете конфигурацию NGINX:

Конечно, вы спросите, как выполняется этот JavaScript-код.
Ответ заключается в том, что NGINX поставляется со встроенным движком Javascript, настроенным для применения к уникальным требованиям NGINX. При этом JavaScript, который использует NJS, представляет собой подмножество, соответствующее ES5 (ECMAScript 5. 1 Strict Variant) с некоторыми расширениями ES6 (ECMAScript 6) и более новыми.

Это означает, что не стоит ожидать от Node.js подобной функциональности, выполнения кода на стороне сервера или возможностей библиотеки. Также NJS не заменяет собой скриптинг на Lua, который является наиболее популярным способом написания промежуточного кода для NGINX, а является альтернативой, предназначенной для тех, кто не знаком с Lua.

Чтобы установить модуль, вы можете собрать его из исходников или проще воспользоваться формой пакета:

package nginx-module-njs

После установки пакета динамические модули njs должны быть загружены с помощью директивы load_module:

load_module modules/ngx_http_js_module.so;

Затем используйте его так, как показано в начале статьи. Вы также можете воспользоваться примерами NGINX JavaScript для начала работы.

В заключение можно сказать, что njs привносит еще один, более удобный для разработчиков способ в существующий и постоянно расширяющийся арсенал способов расширения функциональности NGINX.

Читайте также