Mercurial > hg > nginx-site
diff xml/ru/docs/http/ngx_http_limit_req_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 | 40eec261c2a6 |
children | bfe3eff81d04 |
line wrap: on
line diff
--- a/xml/ru/docs/http/ngx_http_limit_req_module.xml +++ b/xml/ru/docs/http/ngx_http_limit_req_module.xml @@ -2,7 +2,7 @@ <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> -<module name="Директивы модуля ngx_http_limit_req_module" +<module name="Модуль ngx_http_limit_req_module" link="/ru/docs/http/ngx_http_limit_req_module.html" lang="ru"> @@ -10,8 +10,8 @@ <para> Модуль ngx_http_limit_req_module (0.7.21) позволяет ограничить число запросов -для заданной сессии или, как частный случай, с одного адреса. -Ограничение делается с помощью метода leaky bucket. +по заданному ключу или, как частный случай, число запросов с одного IP-адреса. +Ограничение делается с помощью метода “leaky bucket”. </para> </section> @@ -21,7 +21,7 @@ <para> <example> http { - limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; + limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ... @@ -30,7 +30,7 @@ http { ... location /search/ { - limit_req zone=one burst=5; + limit_req zone=one burst=5; } </example> </para> @@ -40,66 +40,34 @@ http { <section name="Директивы" id="directives"> -<directive name="limit_req_zone"> -<syntax><value>$переменная zone=название:размер - rate=скорость</value></syntax> +<directive name="limit_req"> +<syntax> + <parameter>zone</parameter>=<argument>название</argument> + [<parameter>burst</parameter>=<argument>число</argument>] + [<parameter>nodelay</parameter>] +</syntax> <default/> <context>http</context> - -<para> -Директива описывает зону, в которой хранятся состояния сессий. -Значения сессий определяется заданной переменной. -Пример использования: -<example> -limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; -</example> -</para> - -<para> -В данном случае состояния сессий хранятся в зоне "one" размером 10 мегабайт -и средняя скорость запросов для этой зоны не может более 1 запроса в секунду. -</para> - -<para> -В качестве сессии используется адрес клиента. -Обратите внимание, что вместо переменной $remote_addr используется -переменная $binary_remote_addr, позволяющая уменьшить размер состояния -до 64 байт. -В зоне размером 1 мегабайт может разместиться около 16 000 состояний -размером 64 байта. -</para> - -<para> -Скорость задаётся в запросах в секунду. -Если же нужна скорость меньше одного запроса в секунду, -то она задаётся в запросах в минуту, например, -ползапроса в секунду — это 30r/m. -</para> - -</directive> - -<directive name="limit_req"> -<syntax><value>zone=название burst=число [nodelay]</value> -</syntax> -<default/> -<context>http, server, location</context> +<context>server</context> +<context>location</context> <para> Директива задаёт зону (zone) и максимально возможные всплески запросов (burst). Если скорость запросов превышает описанную в зоне, -то их обработка запроса задерживается так, чтобы запросы обрабывались +то их обработка задерживается так, чтобы запросы обрабатывались с заданной скоростью. Избыточные запросы задерживаются до тех пор, пока их число не превысит заданное число всплесков. -В этом случае запрос завершается кодом "Service unavailable" (503). +В этом случае запрос завершается с ошибкой +<http-status code="503" text="Service Temporarily Unavailable"/>. По умолчанию число всплесков равно нулю. Например, директивы <example> -limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; +limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location /search/ { - limit_req zone=one burst=5; + limit_req zone=one burst=5; } </example> @@ -109,9 +77,9 @@ limit_req_zone $binary_remote_addr zon <para> Если же избыточные запросы в пределах лимита всплесков задерживать -не надо, то нужно использовать параметр nodelay: +не требуется, то следует использовать параметр <parameter>nodelay</parameter>: <example> - limit_req zone=one burst=5 nodelay; + limit_req zone=one burst=5 nodelay; </example> </para> @@ -119,16 +87,72 @@ limit_req_zone $binary_remote_addr zon <directive name="limit_req_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> +Директива задаёт желаемый уровень записи в лог случаев ограничения +числа запросов и задержек при обработке запроса. +Задержки записываются в лог с уровнем на единицу меньшим, чем ограничения, +например, если указано <command>limit_req_log_level notice</command>, +то задержки будут записываться в лог на уровне <value>info</value>. +</para> + +</directive> + + +<directive name="limit_req_zone"> +<syntax> + <argument>$переменная </argument> + <parameter>zone</parameter>=<argument>название</argument>:<argument>размер </argument> + <parameter>rate</parameter>=<argument>скорость</argument> +</syntax> +<default/> +<context>http</context> <para> -Директива (0.8.18) задаёт уровень логирования случаев ограничения -числа запросов и задержек при обработке запроса. -Задержки логируются на один уровень ниже, чем ограничения, например, -если задан "limit_req_log_level notice", то задержки будут логироваться -на уровне info. +Директива задаёт параметры зоны, +которая хранит состояние для разных значений ключа. +Состояние в частности хранит текущее число запросов. +Ключом является значение заданной переменной. +Пример использования: +<example> +limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; +</example> +</para> + +<para> +В данном случае состояния хранятся в зоне “one” размером 10 мегабайт, +и средняя скорость запросов для этой зоны не может превышать +1 запроса в секунду. +</para> + +<para> +В качестве ключа используется IP-адрес клиента. +Обратите внимание, что вместо переменной <var>$remote_addr</var> используется +переменная <var>$binary_remote_addr</var>, позволяющая уменьшить +размер состояния до 64 байт. +В зоне размером 1 мегабайт может разместиться около 16 тысяч состояний +размером 64 байта. +При переполнении зоны в ответ на последующие запросы сервер будет +возвращать ошибку +<http-status code="503" text="Service Temporarily Unavailable"/>. +</para> + +<para> +Скорость задаётся в запросах в секунду (r/s). +Если же нужна скорость меньше одного запроса в секунду, +то она задаётся в запросах в минуту (r/m), например, +ползапроса в секунду — это 30r/m. </para> </directive>