Mercurial > hg > nginx-site
diff xml/ru/docs/http/ngx_http_limit_conn_module.xml @ 179:8cc01e2179a9
- Reflected recent changes made to ngx_http_limit_conn_module.
- Revamped documentation for ngx_http_limit_req_module.
- Translated ngx_http_limit_{conn,req}_module into English.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Mon, 14 Nov 2011 18:09:03 +0000 |
parents | xml/ru/docs/http/ngx_http_limit_zone_module.xml@40eec261c2a6 |
children | 9e7d0c9c7eaa |
line wrap: on
line diff
copy from xml/ru/docs/http/ngx_http_limit_zone_module.xml copy to xml/ru/docs/http/ngx_http_limit_conn_module.xml --- a/xml/ru/docs/http/ngx_http_limit_zone_module.xml +++ b/xml/ru/docs/http/ngx_http_limit_conn_module.xml @@ -2,15 +2,21 @@ <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> -<module name="Директивы модуля ngx_http_limit_zone_module" - link="/ru/docs/http/ngx_http_limit_zone_module.html" +<module name="Модуль ngx_http_limit_conn_module" + link="/ru/docs/http/ngx_http_limit_conn_module.html" lang="ru"> <section id="summary"> <para> -Модуль ngx_http_limit_zone_module позволяет ограничить число одновременных -соединений для заданной сессии или, как частный случай, с одного адреса. +Модуль <code>ngx_http_limit_conn_module</code> позволяет ограничить +число соединений по заданному ключу или, +как частный случай, число соединений с одного IP-адреса. +</para> + +<para> +Ограничиваются не любые соединения, а лишь те, в которых имеются +запросы, обрабатываемые сервером, и заголовок запроса уже прочитан. </para> </section> @@ -21,7 +27,7 @@ <para> <example> http { - limit_zone one $binary_remote_addr 10m; + limit_conn_zone $binary_remote_addr zone=addr:10m; ... @@ -30,7 +36,7 @@ http { ... location /download/ { - limit_conn one 1; + limit_conn addr 1; } </example> </para> @@ -40,67 +46,109 @@ http { <section name="Директивы" id="directives"> -<directive name="limit_zone"> -<syntax><value>название $переменная размер</value></syntax> +<directive name="limit_conn"> +<syntax><argument>зона число</argument></syntax> <default/> <context>http</context> +<context>server</context> +<context>location</context> <para> -Директива описывает зону, в которой хранятся состояния сессий. -Значения сессий определяется заданной переменной. -Пример использования: +Директива задаёт максимально допустимое число соединений +для одного значения ключа. +При превышении этого числа в ответ на запрос сервер вернёт ошибку +<http-status code="503" text="Service Temporarily Unavailable"/>. +Например, директивы <example> -limit_zone one $binary_remote_addr 10m; +limit_conn_zone $binary_remote_addr zone=addr:10m; + + server { + location /download/ { + limit_conn addr 1; + } </example> +разрешают одновременно обрабатывать не более одного соединения с одного +IP-адреса. </para> <para> -В качестве сессии используется адрес клиента. -Обратите внимание, что вместо переменной $remote_addr используется -переменная $binary_remote_addr. -Длина значений переменной $remote_addr может быть от 7 до 15 байт, -поэтому размер состоянии равен 32 или 64 байтам. -Длина всех значений переменной $binary_remote_addr всегда 4 байта -и размер состояния всегда 32 байта. -В зоне размером 1 мегабайт может разместиться около 32 000 состояний -размером 32 байта. +Допустимо одновременное указание нескольких директив <code>limit_conn</code>, +при этом будет срабатывать любое из ограничений. </para> -</directive> - - -<directive name="limit_conn"> -<syntax><value>зона число</value></syntax> -<default/> -<context>http, server, location</context> - <para> -Директива задаёт максимальное число одновременных соединений для одной сессии. -При превышении этого числа запрос завершается кодом "Service unavailable" (503). -Например, директивы -<example> -limit_zone one $binary_remote_addr 10m; - - server { - location /download/ { - limit_conn one 1; - } - -</example> -позволяют не более одного одновременного соединения с одного адреса. +Директивы наследуются с предыдущего уровня при условии, что на данном уровне +не описаны свои директивы <code>limit_conn</code>. </para> </directive> <directive name="limit_conn_log_level"> -<syntax><value>[info|notice|warn|error]</value></syntax> +<syntax> +<value>info</value> | +<value>notice</value> | +<value>warn</value> | +<value>error</value> +</syntax> <default>error</default> -<context>http, server, location</context> +<context>http</context> +<context>server</context> +<context>location</context> +<appeared-in>0.8.18</appeared-in> + +<para> +Директива задаёт желаемый уровень записи в лог случаев ограничения +числа соединений. +</para> + +</directive> + + +<directive name="limit_conn_zone"> +<syntax> + <argument>$переменная </argument> + <parameter>zone</parameter>=<argument>название</argument>:<argument>размер</argument> +</syntax> +<default/> +<context>http</context> <para> -Директива (0.8.18) задаёт уровень логирования случаев ограничения -числа соединений. +Директива задаёт параметры зоны, которая хранит состояние +для разных значений ключа. +Состояние в частности хранит текущее число соединений. +Ключом является значение заданной переменной. +Пример использования: +<example> +limit_conn_zone $binary_remote_addr zone=addr:10m; +</example> +Здесь в качестве ключа используется IP-адрес клиента. +Обратите внимание, что вместо переменной <var>$remote_addr</var> +использована переменная <var>$binary_remote_addr</var>. +Длина значения переменной <var>$remote_addr</var> может колебаться +от 7 до 15 байт, при этом размер хранимого состояния составляет +либо 32, либо 64 байта на 32-битных платформах, и всегда 64 +байта на 64-битных. +Длина значения переменной <var>$binary_remote_addr</var> всегда +равна 4 байтам, при этом размер состояния всегда равен 32 байтам +на 32-битных платформах и 64 байтам на 64-битных. +В зоне размером 1 мегабайт может разместиться около 32 тысяч состояний +размером 32 байта, или 16 тысяч состояний размером 64 байта. +При переполнении зоны в ответ на последующие запросы сервер будет +возвращать ошибку +<http-status code="503" text="Service Temporarily Unavailable"/>. +</para> + +</directive> + +<directive name="limit_zone"> +<syntax><argument>$переменная название размер</argument></syntax> +<default/> +<context>http</context> + +<para> +Эта директива устарела в версии 1.1.8, вместо неё следует +использовать директиву <link id="limit_conn_zone"/>. </para> </directive>