changeset 1662:48615cf80e20

Documented the UDP proxy functionality.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 15 Mar 2016 16:31:42 +0300
parents 0da7c65fdae5
children 552c06be2335
files xml/en/docs/stream/ngx_stream_core_module.xml xml/en/docs/stream/ngx_stream_proxy_module.xml xml/en/docs/windows.xml xml/en/index.xml xml/ru/docs/stream/ngx_stream_core_module.xml xml/ru/docs/stream/ngx_stream_proxy_module.xml xml/ru/docs/windows.xml xml/ru/index.xml
diffstat 8 files changed, 137 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/xml/en/docs/stream/ngx_stream_core_module.xml
+++ b/xml/en/docs/stream/ngx_stream_core_module.xml
@@ -9,7 +9,7 @@
 <module name="Module ngx_stream_core_module"
         link="/en/docs/stream/ngx_stream_core_module.html"
         lang="en"
-        rev="10">
+        rev="11">
 
 <section id="summary">
 
@@ -45,6 +45,11 @@ stream {
         server unix:/tmp/backend3;
     }
 
+    upstream dns {
+       server 192.168.0.1:53535;
+       server dns.example.com:53;
+    }
+
     server {
         listen 12345;
         proxy_connect_timeout 1s;
@@ -53,6 +58,13 @@ stream {
     }
 
     server {
+        listen 127.0.0.1:53 udp;
+        proxy_responses 1;
+        proxy_timeout 20s;
+        proxy_pass dns;
+    }
+
+    server {
         listen [::1]:12345;
         proxy_pass unix:/tmp/stream.socket;
     }
@@ -69,6 +81,7 @@ stream {
 <syntax>
     <value>address</value>:<value>port</value>
     [<literal>ssl</literal>]
+    [<literal>udp</literal>]
     [<literal>backlog</literal>=<value>number</value>]
     [<literal>bind</literal>]
     [<literal>ipv6only</literal>=<literal>on</literal>|<literal>off</literal>]
@@ -107,6 +120,11 @@ connections accepted on this port should
 </para>
 
 <para>
+The <literal>udp</literal> parameter configures a listening socket
+for working with datagrams (1.9.13).
+</para>
+
+<para>
 The <literal>listen</literal> directive
 can have several additional parameters specific to socket-related system calls.
 <list type="tag">
--- a/xml/en/docs/stream/ngx_stream_proxy_module.xml
+++ b/xml/en/docs/stream/ngx_stream_proxy_module.xml
@@ -9,13 +9,13 @@
 <module name="Module ngx_stream_proxy_module"
         link="/en/docs/stream/ngx_stream_proxy_module.html"
         lang="en"
-        rev="12">
+        rev="13">
 
 <section id="summary">
 
 <para>
-The <literal>ngx_stream_proxy_module</literal> module (1.9.0) allows passing
-connections to another server over TCP and UNIX-domain sockets.
+The <literal>ngx_stream_proxy_module</literal> module (1.9.0) allows proxying
+data streams over TCP, UDP (1.9.13), and UNIX-domain sockets.
 </para>
 
 </section>
@@ -38,6 +38,13 @@ server {
 }
 
 server {
+    listen 53 udp;
+    proxy_responses 1;
+    proxy_timeout 20s;
+    proxy_pass dns.example.com:53;
+}
+
+server {
     listen [::1]:12345;
     proxy_pass unix:/tmp/stream.socket;
 }
@@ -211,6 +218,26 @@ protocol</link> for connections to a pro
 </directive>
 
 
+<directive name="proxy_responses">
+<syntax><value>number</value></syntax>
+<default/>
+<context>stream</context>
+<context>server</context>
+<appeared-in>1.9.13</appeared-in>
+
+<para>
+Sets the number of datagrams expected from the proxied server
+in response to the client request
+if the <link doc="ngx_stream_core_module.xml" id="udp">UDP</link>
+protocol is used.
+By default, the number of datagrams is not limited:
+the response datagrams will be sent
+until the <link id="proxy_timeout"/> value expires.
+</para>
+
+</directive>
+
+
 <directive name="proxy_ssl">
 <syntax><literal>on</literal> | <literal>off</literal></syntax>
 <default>off</default>
--- a/xml/en/docs/windows.xml
+++ b/xml/en/docs/windows.xml
@@ -8,7 +8,7 @@
 <article name="nginx for Windows"
          link="/en/docs/windows.html"
          lang="en"
-         rev="2">
+         rev="3">
 
 <section>
 
@@ -130,6 +130,10 @@ on Windows Vista and later versions due 
 address space layout randomization being enabled in these Windows versions.
 </listitem>
 
+<listitem>
+The UDP proxy functionality is not supported.
+</listitem>
+
 </list>
 
 </section>
--- a/xml/en/index.xml
+++ b/xml/en/index.xml
@@ -8,7 +8,7 @@
 <article name="nginx"
          link="/en/"
          lang="en"
-         rev="53">
+         rev="54">
 
 
 <section>
@@ -16,7 +16,7 @@
 <para>
 nginx [engine x] is an HTTP and reverse proxy server,
 a mail proxy server,
-and a generic TCP proxy server,
+and a generic TCP/UDP proxy server,
 originally written by <link url="http://sysoev.ru/en/">Igor Sysoev</link>.
 For a long time, it has been running
 on many heavily loaded Russian sites including
@@ -272,17 +272,24 @@ and STLS</link> support.
 </section>
 
 
-<section id="tcp_proxy_server_features"
-        name="TCP proxy server features">
+<section id="generic_proxy_server_features"
+        name="TCP/UDP proxy server features">
 
 <para>
 <list type="bullet">
 
 <listitem>
 <link doc="docs/stream/ngx_stream_proxy_module.xml">Generic proxying</link>
-with
-<link doc="docs/stream/ngx_stream_ssl_module.xml">SSL termination</link>;
-<link doc="docs/stream/ngx_stream_upstream_module.xml">load balancing
+of TCP and UDP;
+</listitem>
+
+<listitem>
+<link doc="docs/stream/ngx_stream_ssl_module.xml">SSL termination</link>
+for TCP;
+</listitem>
+
+<listitem>
+<link doc="docs/stream/ngx_stream_upstream_module.xml">Load balancing
 and fault tolerance</link>;
 </listitem>
 
--- a/xml/ru/docs/stream/ngx_stream_core_module.xml
+++ b/xml/ru/docs/stream/ngx_stream_core_module.xml
@@ -9,7 +9,7 @@
 <module name="Модуль ngx_stream_core_module"
         link="/ru/docs/stream/ngx_stream_core_module.html"
         lang="ru"
-        rev="10">
+        rev="11">
 
 <section id="summary">
 
@@ -45,6 +45,11 @@ stream {
         server unix:/tmp/backend3;
     }
 
+    upstream dns {
+       server 192.168.0.1:53535;
+       server dns.example.com:53;
+    }
+
     server {
         listen 12345;
         proxy_connect_timeout 1s;
@@ -53,6 +58,13 @@ stream {
     }
 
     server {
+        listen 127.0.0.1:53 udp;
+        proxy_responses 1;
+        proxy_timeout 20s;
+        proxy_pass dns;
+    }
+
+    server {
         listen [::1]:12345;
         proxy_pass unix:/tmp/stream.socket;
     }
@@ -69,6 +81,7 @@ stream {
 <syntax>
     <value>адрес</value>:<value>порт</value>
     [<literal>ssl</literal>]
+    [<literal>udp</literal>]
     [<literal>backlog</literal>=<value>число</value>]
     [<literal>bind</literal>]
     [<literal>ipv6only</literal>=<literal>on</literal>|<literal>off</literal>]
@@ -106,6 +119,11 @@ listen unix:/var/run/nginx.sock;
 </para>
 
 <para>
+Параметр <literal>udp</literal> конфигурирует слушающий сокет
+для работы с датаграммами (1.9.13).
+</para>
+
+<para>
 В директиве <literal>listen</literal> можно также указать несколько
 дополнительных параметров, специфичных для связанных с сокетами
 системных вызовов.
--- a/xml/ru/docs/stream/ngx_stream_proxy_module.xml
+++ b/xml/ru/docs/stream/ngx_stream_proxy_module.xml
@@ -9,13 +9,13 @@
 <module name="Модуль ngx_stream_proxy_module"
         link="/ru/docs/stream/ngx_stream_proxy_module.html"
         lang="ru"
-        rev="12">
+        rev="13">
 
 <section id="summary">
 
 <para>
-Модуль <literal>ngx_stream_proxy_module</literal> (1.9.0) позволяет передавать
-соединения другому серверу по TCP и UNIX-сокетам.
+Модуль <literal>ngx_stream_proxy_module</literal> (1.9.0) позволяет проксировать
+потоки данных по TCP, UDP (1.9.13) и UNIX-сокетам.
 </para>
 
 </section>
@@ -38,6 +38,13 @@ server {
 }
 
 server {
+    listen 53 udp;
+    proxy_responses 1;
+    proxy_timeout 20s;
+    proxy_pass dns.example.com:53;
+}
+
+server {
     listen [::1]:12345;
     proxy_pass unix:/tmp/stream.socket;
 }
@@ -212,6 +219,26 @@ PROXY</link> для соединений с проксируемым сервером.
 </directive>
 
 
+<directive name="proxy_responses">
+<syntax><value>число</value></syntax>
+<default/>
+<context>stream</context>
+<context>server</context>
+<appeared-in>1.9.13</appeared-in>
+
+<para>
+Задаёт количество датаграмм, ожидаемых от проксируемого сервера
+в ответ на запрос клиента
+в случае, если используется протокол
+<link doc="ngx_stream_core_module.xml" id="udp">UDP</link>.
+По умолчанию количество датаграмм не ограничено:
+ответные датаграммы будут отправляться
+до истечения значения <link id="proxy_timeout"/>.
+</para>
+
+</directive>
+
+
 <directive name="proxy_ssl">
 <syntax><literal>on</literal> | <literal>off</literal></syntax>
 <default>off</default>
--- a/xml/ru/docs/windows.xml
+++ b/xml/ru/docs/windows.xml
@@ -8,7 +8,7 @@
 <article name="nginx под Windows"
          link="/ru/docs/windows.html"
          lang="ru"
-         rev="2">
+         rev="3">
 
 <section>
 
@@ -130,6 +130,10 @@ nginx/Windows работает как стандартное консольное приложение (не сервис)
 версиях Windows включена рандомизация адресного пространства.
 </listitem>
 
+<listitem>
+Проксирование по UDP не поддерживается.
+</listitem>
+
 </list>
 
 </section>
--- a/xml/ru/index.xml
+++ b/xml/ru/index.xml
@@ -8,7 +8,7 @@
 <article name="nginx"
          link="/ru/"
          lang="ru"
-         rev="53">
+         rev="54">
 
 
 <section>
@@ -16,7 +16,7 @@
 <para>
 nginx [engine x]&mdash;это HTTP-сервер и обратный прокси-сервер,
 почтовый прокси-сервер,
-а также TCP прокси-сервер общего назначения,
+а также TCP/UDP прокси-сервер общего назначения,
 изначально написанный <link url="http://sysoev.ru">Игорем Сысоевым</link>.
 Уже длительное время он обслуживает
 серверы многих высоконагруженных российских сайтов, таких как
@@ -271,17 +271,24 @@ AUTH LOGIN/PLAIN/CRAM-MD5;
 </section>
 
 
-<section id="tcp_proxy_server_features"
-        name="Функциональность TCP прокси-сервера">
+<section id="generic_proxy_server_features"
+        name="Функциональность TCP/UDP прокси-сервера">
 
 <para>
 <list type="bullet">
 
 <listitem>
-<link doc="docs/stream/ngx_stream_proxy_module.xml">Проксирование</link>

-<link doc="docs/stream/ngx_stream_ssl_module.xml">SSL termination</link>;
-<link doc="docs/stream/ngx_stream_upstream_module.xml">распределение нагрузки
+<link doc="docs/stream/ngx_stream_proxy_module.xml">Проксирование
+TCP и UDP;</link>
+</listitem>
+
+<listitem>
+<link doc="docs/stream/ngx_stream_ssl_module.xml">SSL termination</link>
+для TCP;
+</listitem>
+
+<listitem>
+<link doc="docs/stream/ngx_stream_upstream_module.xml">Распределение нагрузки
 и отказоустойчивость</link>;
 </listitem>