view xml/ru/docs/njs/index.xml @ 2846:fdf1464e1977

Moved banner to the external file to make partial rollout possible. An idea is to have several banners and show them with different probability specified by split directive in the nginx.conf
author Sergey Budnevitch <sb@waeme.net>
date Tue, 10 May 2022 18:07:27 +0400
parents 8831b3d9f332
children cc475ba7d406
line wrap: on
line source

<?xml version="1.0"?>

<!--
  Copyright (C) Nginx, Inc.
  -->

<!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">

<article name="Сценарный язык njs"
        link="/ru/docs/njs/index.html"
        lang="ru"
        rev="32"
        toc="no">

<section id="summary">

<para>
njs - это подмножество языка JavaScript, позволяющее
расширить функциональность nginx.
njs совместим с
<link url="http://www.ecma-international.org/ecma-262/5.1/">ECMAScript 5.1</link>
(строгий режим) c некоторыми расширениями
<link url="http://www.ecma-international.org/ecma-262/6.0/">ECMAScript 6</link>
и позже.
Совместимость находится в стадии
<link doc="compatibility.xml">развития</link>.
</para>

</section>


<section id="links">

<para>
<list type="bullet">

<listitem>
<link doc="install.xml"/>
</listitem>

<listitem>
<link doc="changes.xml">Изменения в njs</link>
</listitem>

<listitem>
<link doc="reference.xml"/>
</listitem>

<listitem>
<link url="https://github.com/nginx/njs-examples/">Примеры использования</link>
</listitem>

<listitem>
<link doc="compatibility.xml"/>
</listitem>

<listitem>
<link doc="cli.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>
и <link url="https://www.nginx.com/blog/tag/nginx-javascript-module/">блогпостах</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 {
    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>