<?xml version="1.0"?>
<!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
<article name="Модуль nginx JavaScript"
link="/ru/docs/njs/index.html"
lang="ru"
rev="38"
toc="no">
<section id="summary">
<para>
njs - это модуль nginx, который расширяет возможности сервера nginx с помощью
сценариев JavaScript, позволяя создавать пользовательскую
логику на стороне сервера и выполнять <link id="usecases">другие задачи</link>.
</para>
<para>
<note>
Встроенный JavaScript-движок
<link doc="engine.xml" id="njs_engine">njs</link>
объявлен устаревшим
начиная с <link doc="changes.xml" id="njs1.0.0">1.0.0</link>;
в новых конфигурациях следует использовать движок
<link doc="engine.xml" id="quickjs_engine">QuickJS</link>.
</note>
</para>
</section>
<section id="links">
<para>
<list type="bullet">
<listitem>
<link doc="install.xml"/>
</listitem>
<listitem>
<link doc="changes.xml">Изменения в njs</link> [en]
</listitem>
<listitem>
<link doc="reference.xml">Справочник</link> [en]
</listitem>
<listitem>
<link doc="engine.xml"/>
</listitem>
<listitem>
<link doc="native_modules.xml"/>
</listitem>
<listitem>
<link url="https://github.com/nginx/njs-examples/">Примеры использования</link>
</listitem>
<listitem>
<link doc="security.xml">Безопасность</link> [en]
</listitem>
<listitem>
<link doc="compatibility.xml"/>
</listitem>
<listitem>
<link doc="cli.xml"/>
</listitem>
<listitem>
<link doc="preload_objects.xml"/>
</listitem>
<listitem>
<link id="tested_os_and_platforms">Протестированные ОС и платформы</link>
</listitem>
</list>
</para>
<para>
<list type="bullet">
<listitem>
<link doc="../http/ngx_http_js_module.xml">
ngx_http_js_module</link>
</listitem>
<listitem>
<link doc="../stream/ngx_stream_js_module.xml">
ngx_stream_js_module</link>
</listitem>
</list>
</para>
<para>
<list type="bullet">
<listitem>
<link doc="typescript.xml"/>
</listitem>
<listitem>
<link doc="node_modules.xml"/>
</listitem>
</list>
</para>
</section>
<section id="usecases" name="Сценарии использования">
<para>
<list type="bullet">
<listitem>
Комплексное управление доступом и проверка защиты при помощи njs
до получения запроса сервером группы
</listitem>
<listitem>
Управление заголовками ответа
</listitem>
<listitem>
Создание гибких асинхронных обработчиков содержимого и фильтров
</listitem>
</list>
Подробнее о сценариях использования
см. в <link url="https://github.com/nginx/njs-examples/">примерах</link>.
</para>
</section>
<section id="example" name="Базовый пример HTTP">
<para>
Чтобы использовать njs в nginx, необходимо:
<list type="bullet">
<listitem>
<para>
<link doc="install.xml">установить</link> njs
</para>
</listitem>
<listitem id="hello_world">
<para>
создать файл сценария njs, например <path>http.js</path>.
Описание свойств и методов языка njs
см. в <link doc="reference.xml">справочнике</link>.
<example>
function hello(r) {
r.return(200, "Hello world!");
}
export default {hello};
</example>
</para>
</listitem>
<listitem>
<para>
в файле <path>nginx.conf</path> включить
модуль <link doc="../http/ngx_http_js_module.xml">ngx_http_js_module</link>
и указать директиву
<link doc="../http/ngx_http_js_module.xml" id="js_import">js_import</link>
с файлом сценария <path>http.js</path>:
<example>
load_module modules/ngx_http_js_module.so;
events {}
http {
# начиная с 0.9.1
js_engine qjs;
js_import http.js;
server {
listen 8000;
location / {
js_content http.hello;
}
}
}
</example>
</para>
</listitem>
</list>
Также доступна отдельная утилита <link doc="cli.xml">командной строки</link>,
которая может использоваться независимо от nginx для разработки и отладки njs.
</para>
</section>
<section id="tested_os_and_platforms"
name="Протестированные ОС и платформы">
<para>
<list type="bullet">
<listitem>
FreeBSD / amd64;
</listitem>
<listitem>
Linux / x86, amd64, arm64, ppc64el;
</listitem>
<listitem>
Solaris 11 / amd64;
</listitem>
<listitem>
macOS / x86_64;
</listitem>
</list>
</para>
</section>
<section id="presentation" name="Презентация на nginx.conf 2018">
<para><video id="Jc_L6UffFOs" /></para>
</section>
</article>