Mercurial > hg > nginx-site
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>