changeset 1843:3492eb9b8138

Translated http and stream js modules into Russian.
author Yaroslav Zhuravlev <yar@nginx.com>
date Mon, 28 Nov 2016 21:29:02 +0300
parents db848aaa123a
children f56626ce9c40
files xml/ru/GNUmakefile xml/ru/docs/http/ngx_http_js_module.xml xml/ru/docs/index.xml xml/ru/docs/stream/ngx_stream_js_module.xml
diffstat 4 files changed, 356 insertions(+), 59 deletions(-) [+]
line wrap: on
line diff
--- a/xml/ru/GNUmakefile
+++ b/xml/ru/GNUmakefile
@@ -48,6 +48,7 @@ REFS =									\
 		http/ngx_http_hls_module				\
 		http/ngx_http_image_filter_module			\
 		http/ngx_http_index_module				\
+		http/ngx_http_js_module					\
 		http/ngx_http_limit_conn_module				\
 		http/ngx_http_limit_req_module				\
 		http/ngx_http_limit_zone_module				\
@@ -88,6 +89,7 @@ REFS =									\
 		stream/ngx_stream_core_module				\
 		stream/ngx_stream_geo_module				\
 		stream/ngx_stream_geoip_module				\
+		stream/ngx_stream_js_module				\
 		stream/ngx_stream_limit_conn_module			\
 		stream/ngx_stream_log_module				\
 		stream/ngx_stream_map_module				\
new file mode 100644
--- /dev/null
+++ b/xml/ru/docs/http/ngx_http_js_module.xml
@@ -0,0 +1,280 @@
+<?xml version="1.0"?>
+
+<!--
+  Copyright (C) Nginx, Inc.
+  -->
+
+<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
+
+<module name="Модуль ngx_http_js_module"
+        link="/ru/docs/http/ngx_http_js_module.html"
+        lang="ru"
+        rev="1">
+
+<section id="summary">
+
+<para>
+Модуль <literal>ngx_http_js_module</literal> позволяет задавать обработчики
+location и переменных на JavaScript.
+</para>
+
+<para>
+По умолчанию этот модуль не собирается, его необходимо собрать с
+модулем nginx JavaScript с помощью конфигурационного параметра
+<literal>--add_module</literal>:
+<example>
+./configure --add-module=<value>path-to-njs</value>/nginx
+</example>
+<link url="http://hg.nginx.org/njs">Репозиторий</link>
+модуля nginx JavaScript можно клонировать следующей командой
+(необходим клиент <link url="https://www.mercurial-scm.org">Mercurial</link>):
+<example>
+hg clone http://hg.nginx.org/njs
+</example>
+Модуль также можно собрать как
+<link doc="../ngx_core_module.xml" id="load_module">динамический</link>:
+<example>
+./configure --add-dynamic_module=<value>path-to-njs</value>/nginx
+</example>
+</para>
+
+</section>
+
+
+<section id="issues" name="Известные проблемы">
+
+<para>
+Модуль экспериментальный, поэтому возможно всё.
+</para>
+
+</section>
+
+
+<section id="example" name="Пример конфигурации">
+
+<para>
+<example>
+js_include http.js;
+
+server {
+    listen 8000;
+
+    location / {
+        js_set     $foo  foo;
+        add_header X-Foo $foo;
+        js_content baz;
+    }
+
+    location /summary {
+        js_set $summary summary;
+        return 200      $summary;
+    }
+}
+</example>
+</para>
+
+<para>
+Файл <path>http.js</path>:
+<example>
+function foo(req, res) {
+    req.log("hello from foo() handler");
+    return "foo";
+}
+
+function summary(req, res) {
+    var a, s, h;
+
+    s = "JS summary\n\n";
+
+    s += "Method: " + req.method + "\n";
+    s += "HTTP version: " + req.httpVersion + "\n";
+    s += "Host: " + req.headers.host + "\n";
+    s += "Remote Address: " + req.remoteAddress + "\n";
+    s += "URI: " + req.uri + "\n";
+
+    s += "Headers:\n";
+    for (h in req.headers) {
+        s += "  header '" + h + "' is '" + req.headers[h] + "'\n";
+    }
+
+    s += "Args:\n";
+    for (a in req.args) {
+        s += "  arg '" + a + "' is '" + req.args[a] + "'\n";
+    }
+
+    return s;
+}
+
+function baz(req, res) {
+    res.headers.foo = 1234;
+    res.status = 200;
+    res.contentType = "text/plain; charset=utf-8";
+    res.contentLength = 15;
+    res.sendHeader();
+    res.send("nginx");
+    res.send("java");
+    res.send("script");
+
+    res.finish();
+}
+</example>
+</para>
+
+</section>
+
+
+<section id="directives" name="Директивы">
+
+<directive name="js_include">
+<syntax><value>файл</value></syntax>
+<default/>
+<context>http</context>
+<context>server</context>
+<context>location</context>
+
+<para>
+Задаёт файл, позволяющий задавать обработчики location и переменных
+на JavaScript.
+</para>
+
+</directive>
+
+
+<directive name="js_content">
+<syntax><value>функция</value></syntax>
+<default/>
+<context>location</context>
+<context>limit_except</context>
+
+<para>
+Задаёт функцию JavaScript в качестве обработчика содержимого location.
+</para>
+
+</directive>
+
+
+<directive name="js_set">
+<syntax>
+<value>$переменная</value> <value>функция</value></syntax>
+<default/>
+<context>http</context>
+<context>server</context>
+<context>location</context>
+
+<para>
+Задаёт функцию JavaScript для указанной переменной.
+</para>
+
+</directive>
+
+</section>
+
+
+<section id="arguments" name="Аргументы запроса и ответа">
+<para>
+Каждый HTTP-обработчик JavaScript получает два аргумента: запрос и ответ.
+</para>
+
+<para>
+Объект запроса имеет следующие свойства:
+<list type="tag">
+
+<tag-name><literal>uri</literal></tag-name>
+<tag-desc>
+текущий URI запроса, только чтение
+</tag-desc>
+
+<tag-name><literal>method</literal></tag-name>
+<tag-desc>
+метод запроса, только чтение
+</tag-desc>
+
+<tag-name><literal>httpVersion</literal></tag-name>
+<tag-desc>
+версия HTTP, только чтение
+</tag-desc>
+
+<tag-name><literal>remoteAddress</literal></tag-name>
+<tag-desc>
+адрес клиента, только чтение
+</tag-desc>
+
+<tag-name><literal>headers{}</literal></tag-name>
+<tag-desc>
+объект заголовков запроса, только чтение.
+<para>
+Например, доступ к заголовку <literal>Header-Name</literal>
+можно получить при помощи синтаксиса <literal>headers['Header-Name']</literal>
+или <literal>headers.Header_name</literal>
+</para>
+</tag-desc>
+
+<tag-name><literal>args{}</literal></tag-name>
+<tag-desc>
+объект аргументов запроса, только чтение
+</tag-desc>
+
+<tag-name><literal>variables{}</literal></tag-name>
+<tag-desc>
+объект переменных nginx, только чтение
+</tag-desc>
+
+<tag-name><literal>log(<value>строка</value>)</literal></tag-name>
+<tag-desc>
+записывает <literal>строку</literal> в лог-файл ошибок
+</tag-desc>
+</list>
+</para>
+
+<para>
+Объект ответа имеет следующие свойства:
+<list type="tag">
+
+<tag-name><literal>status</literal></tag-name>
+<tag-desc>
+статус ответа, доступно для записи
+</tag-desc>
+
+<tag-name><literal>headers{}</literal></tag-name>
+<tag-desc>
+объект заголовков ответа
+</tag-desc>
+
+<tag-name><literal>contentType</literal></tag-name>
+<tag-desc>
+значение поля <header>Content-Type</header> заголовка ответа,
+доступно для записи
+</tag-desc>
+
+<tag-name><literal>contentLength</literal></tag-name>
+<tag-desc>
+значение поля <header>Content-Length</header> заголовка ответа,
+доступно для записи
+</tag-desc>
+</list>
+</para>
+
+<para>
+Объект ответа имеет следующие методы:
+<list type="tag">
+
+<tag-name><literal>sendHeader()</literal></tag-name>
+<tag-desc>
+отправляет заголовок HTTP клиенту
+</tag-desc>
+
+<tag-name><literal>send(<value>строка</value>)</literal></tag-name>
+<tag-desc>
+отправляет часть тела ответа клиенту
+</tag-desc>
+
+<tag-name><literal>finish()</literal></tag-name>
+<tag-desc>
+завершает отправку ответа клиенту
+</tag-desc>
+</list>
+</para>
+
+</section>
+
+</module>
--- a/xml/ru/docs/index.xml
+++ b/xml/ru/docs/index.xml
@@ -8,7 +8,7 @@
 <article name="nginx: документация"
          link="/ru/docs/"
          lang="ru"
-         rev="34"
+         rev="35"
          toc="no">
 
 
@@ -307,6 +307,11 @@ ngx_http_index_module</link>
 </listitem>
 
 <listitem>
+<link doc="http/ngx_http_js_module.xml">
+ngx_http_js_module</link>
+</listitem>
+
+<listitem>
 <link doc="http/ngx_http_limit_conn_module.xml">
 ngx_http_limit_conn_module</link>
 </listitem>
@@ -519,6 +524,11 @@ ngx_stream_geoip_module</link>
 </listitem>
 
 <listitem>
+<link doc="stream/ngx_stream_js_module.xml">
+ngx_stream_js_module</link>
+</listitem>
+
+<listitem>
 <link doc="stream/ngx_stream_limit_conn_module.xml">
 ngx_stream_limit_conn_module</link>
 </listitem>
copy from xml/en/docs/stream/ngx_stream_js_module.xml
copy to xml/ru/docs/stream/ngx_stream_js_module.xml
--- a/xml/en/docs/stream/ngx_stream_js_module.xml
+++ b/xml/ru/docs/stream/ngx_stream_js_module.xml
@@ -6,33 +6,33 @@
 
 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
 
-<module name="Module ngx_stream_js_module"
-        link="/en/docs/stream/ngx_stream_js_module.html"
-        lang="en"
+<module name="Модуль ngx_stream_js_module"
+        link="/ru/docs/stream/ngx_stream_js_module.html"
+        lang="ru"
         rev="1">
 
 <section id="summary">
 
 <para>
-The <literal>ngx_stream_js_module</literal> module is used to
-implement handlers in JavaScript.
+Модуль <literal>ngx_stream_js_module</literal> позволяет задавать
+обработчики на JavaScript.
 </para>
 
 <para>
-This module is not built by default, it should be compiled with
-nginx JavaScript module using the
-<literal>--add_module</literal> configuration parameter:
+По умолчанию этот модуль не собирается, его необходимо собрать с
+модулем nginx JavaScript с помощью конфигурационного параметра
+<literal>--add_module</literal>:
 <example>
 ./configure --add-module=<value>path-to-njs</value>/nginx
 </example>
-The <link url="http://hg.nginx.org/njs">repository</link>
-with nginx JavaScript module can be cloned with the following command
-(requires <link url="https://www.mercurial-scm.org">Mercurial</link> client):
+<link url="http://hg.nginx.org/njs">Репозиторий</link>
+модуля nginx JavaScript можно клонировать следующей командой
+(необходим клиент <link url="https://www.mercurial-scm.org">Mercurial</link>):
 <example>
 hg clone http://hg.nginx.org/njs
 </example>
-This module can also be built as
-<link doc="../ngx_core_module.xml" id="load_module">dynamic</link>:
+Модуль также можно собрать как
+<link doc="../ngx_core_module.xml" id="load_module">динамический</link>:
 <example>
 ./configure --add-dynamic_module=<value>path-to-njs</value>/nginx
 </example>
@@ -41,16 +41,16 @@ This module can also be built as
 </section>
 
 
-<section id="issues" name="Known Issues">
+<section id="issues" name="Известные проблемы">
 
 <para>
-The module is experimental, caveat emptor applies.
+Модуль экспериментальный, поэтому возможно всё.
 </para>
 
 </section>
 
 
-<section id="example" name="Example Configuration">
+<section id="example" name="Пример конфигурации">
 
 <para>
 <example>
@@ -89,7 +89,7 @@ http {
 </para>
 
 <para>
-The <path>stream.js</path> file:
+Файл <path>stream.js</path>:
 <example>
 var req = '';
 var matched = 0;
@@ -114,25 +114,25 @@ function bar(s) {
     return "foo-var" + v.remote_port + "; pid=" + v.pid;
 }
 
-// The filter processes one buffer per call.
-// The buffer is available in s.buffer both for
-// reading and writing.  Called for both directions.
+// Фильтр обрабатывает один буфер за вызов.
+// Буфер недоступен в s.buffer для
+// чтения и записи.  Вызывается в обоих направлениях.
 
 function baz(s) {
     if (s.fromUpstream || matched) {
         return;
     }
 
-    // Disable certain addresses.
+    // Отключение определённых адресов.
 
     if (s.remoteAddress.match('^192.*')) {
         return s.ERROR;
     }
 
-    // Read HTTP request line.
-    // Collect bytes in 'req' until request
-    // line is read.  Clear current buffer to
-    // disable output.
+    // Чтение строки HTTP-запроса.
+    // Получение байт в 'req' до того как
+    // будет прочитана строка запроса.  Очистка текущего буфера
+    // для отключения вывода.
 
     req = req + s.buffer;
     s.buffer = '';
@@ -140,7 +140,7 @@ function baz(s) {
     n = req.search('\n');
 
     if (n != -1) {
-        // Inject a new HTTP header.
+        // Вставка нового HTTP-заголовка.
         var rest = req.substr(n + 1);
         req = req.substr(0, n + 1);
 
@@ -149,8 +149,8 @@ function baz(s) {
         s.log('req:' + req);
         s.log('rest:' + rest);
 
-        // Output the result and skip further
-        // processing.
+        // Вывод результата и пропуск дальнейшей
+        // обработки.
 
         s.buffer = req + 'Foo: addr_' + addr + '\r\n' + rest;
         matched = 1;
@@ -168,57 +168,58 @@ function xyz(s) {
 </section>
 
 
-<section id="directives" name="Directives">
+<section id="directives" name="Директивы">
 
 <directive name="js_access">
-<syntax><value>function</value></syntax>
+<syntax><value>функция</value></syntax>
 <default/>
 <context>stream</context>
 <context>server</context>
 
 <para>
-Sets a JavaScript function which will be called at the
-<link doc="stream_processing.xml" id="access_phase">access</link> phase.
+Задаёт функцию JavaScript, которая будет вызываться в
+<link doc="stream_processing.xml" id="access_phase">access</link>-фазе.
 </para>
 
 </directive>
 
 
 <directive name="js_filter">
-<syntax><value>function</value></syntax>
+<syntax><value>функция</value></syntax>
 <default/>
 <context>stream</context>
 <context>server</context>
 
 <para>
-Sets a data filter.
+Задаёт фильтр данных.
 </para>
 
 </directive>
 
 
 <directive name="js_include">
-<syntax><value>file</value></syntax>
+<syntax><value>файл</value></syntax>
 <default/>
 <context>stream</context>
 <context>server</context>
 
 <para>
-Specifies a file that implements server and variable handlers in JavaScript.
+Задаёт файл, который позволяет
+задавать обработчики server и переменных на JavaScript.
 </para>
 
 </directive>
 
 
 <directive name="js_preread">
-<syntax><value>function</value></syntax>
+<syntax><value>функция</value></syntax>
 <default/>
 <context>stream</context>
 <context>server</context>
 
 <para>
-Sets a JavaScript function which will be called at the
-<link doc="stream_processing.xml" id="preread_phase">preread</link> phase.
+Задаёт функцию JavaScript, которая будет вызываться в
+<link doc="stream_processing.xml" id="preread_phase">preread</link>-фазе.
 </para>
 
 </directive>
@@ -226,13 +227,13 @@ Sets a JavaScript function which will be
 
 <directive name="js_set">
 <syntax>
-<value>$variable</value> <value>function</value></syntax>
+<value>$переменная</value> <value>функция</value></syntax>
 <default/>
 <context>stream</context>
 <context>server</context>
 
 <para>
-Sets a JavaScript function for the specified variable.
+Задаёт функцию JavaScript для указанной переменной.
 </para>
 
 </directive>
@@ -240,77 +241,81 @@ Sets a JavaScript function for the speci
 </section>
 
 
-<section id="properties" name="Session Object Properties">
+<section id="properties" name="Свойства объекта сессии">
 <para>
-Each stream JavaScript handler receives one argument, a stream session object.
+Каждый stream-обработчик JavaScript получает один аргумент:
+объект stream-сессии.
 </para>
 
 <para>
-The session object has the following properties:
+Объект сессии имеет следующие свойства:
 
 <list type="tag">
 
 <tag-name><literal>remoteAddress</literal></tag-name>
 <tag-desc>
-client address, read-only
+адрес клиента, только чтение
 </tag-desc>
 
 <tag-name><literal>eof</literal></tag-name>
 <tag-desc>
-a boolean read-only property, true if the current buffer is the last buffer
+логическое свойство,
+true, если текущий буфер является последним буфером,
+только чтение
 </tag-desc>
 
 <tag-name><literal>fromUpstream</literal></tag-name>
 <tag-desc>
-a boolean read-only property,
-true if the current buffer is from the upstream server to the client
+логическое свойство,
+true, если текущий буфер является буфером от проксируемого сервера к клиенту,
+только чтение
 </tag-desc>
 
 <tag-name><literal>buffer</literal></tag-name>
 <tag-desc>
-the current buffer, writable
+текущий буфер, доступен для записи
 </tag-desc>
 
 <tag-name><literal>variables{}</literal></tag-name>
 <tag-desc>
-nginx variables object, read-only
+объект переменных nginx, только чтение
 </tag-desc>
 
 <tag-name><literal>OK</literal></tag-name>
 <tag-desc>
-the <literal>OK</literal> return code
+код <literal>OK</literal>
 </tag-desc>
 
 <tag-name><literal>DECLINED</literal></tag-name>
 <tag-desc>
-the <literal>DECLINED</literal> return code
+код <literal>DECLINED</literal>
 </tag-desc>
 
 <tag-name><literal>AGAIN</literal></tag-name>
 <tag-desc>
-the <literal>AGAIN</literal> return code
+код <literal>AGAIN</literal>
 </tag-desc>
 
 <tag-name><literal>ERROR</literal></tag-name>
 <tag-desc>
-the <literal>ERROR</literal> return code
+код <literal>ERROR</literal>
 </tag-desc>
 
 <tag-name><literal>ABORT</literal></tag-name>
 <tag-desc>
-the <literal>ABORT</literal> return code
+код <literal>ABORT</literal>
 </tag-desc>
 </list>
 </para>
 
 <para>
-The session object has the following methods:
+Объект сессии имеет следующие методы:
 
 <list type="tag">
 
-<tag-name><literal>log(<value>string</value>)</literal></tag-name>
+<tag-name><literal>log(<value>строка</value>)</literal></tag-name>
 <tag-desc>
-writes a sent <value>string</value> to the error log
+записывает отправленную <value>строку</value> в лог-файл ошибок
 </tag-desc>
 </list>
 </para>