# HG changeset patch # User Ruslan Ermilov # Date 1321294143 0 # Node ID 8cc01e2179a9714e2b9b0591aa73482992acaa4f # Parent 65431179fb8f66213524ad617f77b41135e4df90 - 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. diff -r 65431179fb8f -r 8cc01e2179a9 xml/en/GNUmakefile --- a/xml/en/GNUmakefile Mon Nov 14 15:41:15 2011 +0000 +++ b/xml/en/GNUmakefile Mon Nov 14 18:09:03 2011 +0000 @@ -27,6 +27,8 @@ en/docs/http/ngx_http_empty_gif_module \ en/docs/http/ngx_http_flv_module \ en/docs/http/ngx_http_index_module \ + en/docs/http/ngx_http_limit_conn_module \ + en/docs/http/ngx_http_limit_req_module \ en/docs/http/ngx_http_mp4_module \ en/docs/http/ngx_http_random_index_module \ diff -r 65431179fb8f -r 8cc01e2179a9 xml/en/docs/http/ngx_http_limit_conn_module.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/en/docs/http/ngx_http_limit_conn_module.xml Mon Nov 14 18:09:03 2011 +0000 @@ -0,0 +1,159 @@ + + + + + + +
+ + +The ngx_http_limit_conn_module module allows +to limit the number of connections per defined key, in +particular, the number of connections from a single IP address. + + + +Not all connections are counted; only those that have requests +currently being processed by the server, in which request header has +been fully read. + + +
+ + +
+ + + +http { + limit_conn_zone $binary_remote_addr zone=addr:10m; + + ... + + server { + + ... + + location /download/ { + limit_conn addr 1; + } + + + +
+ + +
+ + +zone number + +http +server +location + + +Sets the maximum allowed number of connections for a given key value. +When this limit is exceeded, the server will return error + +in reply to a request. +For example, the directives + +limit_conn_zone $binary_remote_addr zone=addr:10m; + + server { + location /download/ { + limit_conn addr 1; + } + +allow for only a single connection at a time, per unique IP address. + + + +When several limit_conn directives are specified, +any configured limit will apply. + + + +These directives are inherited from the previous level if and +only if there are no +limit_conn +directives on the current level. + + + + + + + +info | +notice | +warn | +error + +error +http +server +location +0.8.18 + + +Sets the desired logging level for cases when the server +limits the number of connections. + + + + + + + + $variable + zone=name:size + + +http + + +Sets the parameters for a zone that keeps states for various keys. +This state stores the current number of connections in particular. +The key is the value of the specified variable. +Example usage: + +limit_conn_zone $binary_remote_addr zone=addr:10m; + +Here, an IP address of the client serves as a key. +Note that instead of $remote_addr, the +$binary_remote_addr variable is used here. +The length of the $remote_addr variable's value can +range from 7 to 15 bytes, and the stored state occupies either +32 or 64 bytes of memory on 32-bit platforms, and always 64 +bytes on 64-bit platforms. +The length of the $binary_remote_addr variable's value +is always 4 bytes, and the stored state always occupies 32 bytes +on 32-bit platforms, and 64 bytes on 64-bit platforms. +One megabyte zone can keep about 32 thousand 32-bit states, +and about 16 thousand 64-byte states. +If the storage for a zone is exhausted, the server will return error + +to all further requests. + + + + + +$variable name size + +http + + +This directive is made obsolete in version 1.1.8, +the directive should be used instead. + + + + +
+ +
diff -r 65431179fb8f -r 8cc01e2179a9 xml/en/docs/http/ngx_http_limit_req_module.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/en/docs/http/ngx_http_limit_req_module.xml Mon Nov 14 18:09:03 2011 +0000 @@ -0,0 +1,162 @@ + + + + + + +
+ + +The module ngx_http_limit_req_module (0.7.21) allow to limit the number +of requests per defined key, in particular, the number of requests +from a single IP address. +The limitation is done using the “leaky bucket” method. + + +
+ + +
+ + + +http { + limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; + + ... + + server { + + ... + + location /search/ { + limit_req zone=one burst=5; + } + + + +
+ + +
+ + + + zone=name + [burst=number] + [nodelay] + + +http +server +location + + +Sets a zone and the maximum allowed burst of requests. +If the rate of requests exceeds the rate configured for a zone, +request processing is delayed such as that they are processed +at a defined rate. +Excessive requests are delayed until their number exceeds the +defined number of bursts. +In this case, the request is terminated with an error +. +By default, the number of bursts is equal to zero. +For example, the directives + +limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; + + server { + location /search/ { + limit_req zone=one burst=5; + } + + +allow not more than 1 request per second at an average, +with bursts not exceeding 5 requests. + + + +If delaying of excessive requests while requests are being limited is not +desired, the parameter nodelay should be used: + + limit_req zone=one burst=5 nodelay; + + + + + + + + +info | +notice | +warn | +error + +error +http +server +location +0.8.18 + + +Sets the desired logging level for cases when the server limits +the number of requests, or delays request processing. +Delays are logged with the level one less than limits; for example, +if limit_req_log_level notice is specified, +delays are logged with the info level. + + + + + + + + $variable + zone=name:size + rate=rate + + +http + + +Sets the parameters for a zone that keeps states for various keys. +This state stores the current number of requests in particular. +The key is the value of the specified variable. +Example usage: + +limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; + + + + +Here, the states are kept in a 10 megabyte zone “one”, and an +average rate of requests for this zone cannot exceed +1 request per second. + + + +An IP address of the client serves as a key. +Note that instead of $remote_addr, the +$binary_remote_addr variable is used here, +allowing to lower the size of a state down to 64 bytes. +One megabyte zone can keep about 16 thousand 64-byte states. +If the storage for a zone is exhausted, the server will return error + +to all further requests. + + + +The rate is specified in requests per second (r/s). +If a rate of less than one request per second is desired, +it is specified in request per minute (r/m). +For example, half-request per second is 30r/m. + + + + +
+ +
diff -r 65431179fb8f -r 8cc01e2179a9 xml/en/docs/index.xml --- a/xml/en/docs/index.xml Mon Nov 14 15:41:15 2011 +0000 +++ b/xml/en/docs/index.xml Mon Nov 14 18:09:03 2011 +0000 @@ -68,6 +68,16 @@ + +ngx_http_limit_conn_module + + + + +ngx_http_limit_req_module + + + ngx_http_index_module diff -r 65431179fb8f -r 8cc01e2179a9 xml/en/index.xml --- a/xml/en/index.xml Mon Nov 14 15:41:15 2011 +0000 +++ b/xml/en/index.xml Mon Nov 14 18:09:03 2011 +0000 @@ -137,7 +137,10 @@ -Limiting the number of simultaneous connections or requests +Limiting the number of simultaneous +connections +or +requests coming from one address; diff -r 65431179fb8f -r 8cc01e2179a9 xml/ru/GNUmakefile --- a/xml/ru/GNUmakefile Mon Nov 14 15:41:15 2011 +0000 +++ b/xml/ru/GNUmakefile Mon Nov 14 18:09:03 2011 +0000 @@ -28,6 +28,7 @@ ru/docs/http/ngx_http_headers_module \ ru/docs/http/ngx_http_image_filter_module \ ru/docs/http/ngx_http_index_module \ + ru/docs/http/ngx_http_limit_conn_module \ ru/docs/http/ngx_http_limit_req_module \ ru/docs/http/ngx_http_limit_zone_module \ ru/docs/http/ngx_http_log_module \ diff -r 65431179fb8f -r 8cc01e2179a9 xml/ru/docs/http/ngx_http_limit_conn_module.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/ru/docs/http/ngx_http_limit_conn_module.xml Mon Nov 14 18:09:03 2011 +0000 @@ -0,0 +1,158 @@ + + + + + + +
+ + +Модуль ngx_http_limit_conn_module позволяет ограничить +число соединений по заданному ключу или, +как частный случай, число соединений с одного IP-адреса. + + + +Ограничиваются не любые соединения, а лишь те, в которых имеются +запросы, обрабатываемые сервером, и заголовок запроса уже прочитан. + + +
+ + +
+ + + +http { + limit_conn_zone $binary_remote_addr zone=addr:10m; + + ... + + server { + + ... + + location /download/ { + limit_conn addr 1; + } + + + +
+ + +
+ + +зона число + +http +server +location + + +Директива задаёт максимально допустимое число соединений +для одного значения ключа. +При превышении этого числа в ответ на запрос сервер вернёт ошибку +. +Например, директивы + +limit_conn_zone $binary_remote_addr zone=addr:10m; + + server { + location /download/ { + limit_conn addr 1; + } + +разрешают одновременно обрабатывать не более одного соединения с одного +IP-адреса. + + + +Допустимо одновременное указание нескольких директив limit_conn, +при этом будет срабатывать любое из ограничений. + + + +Директивы наследуются с предыдущего уровня при условии, что на данном уровне +не описаны свои директивы limit_conn. + + + + + + + +info | +notice | +warn | +error + +error +http +server +location +0.8.18 + + +Директива задаёт желаемый уровень записи в лог случаев ограничения +числа соединений. + + + + + + + + $переменная + zone=название:размер + + +http + + +Директива задаёт параметры зоны, которая хранит состояние +для разных значений ключа. +Состояние в частности хранит текущее число соединений. +Ключом является значение заданной переменной. +Пример использования: + +limit_conn_zone $binary_remote_addr zone=addr:10m; + +Здесь в качестве ключа используется IP-адрес клиента. +Обратите внимание, что вместо переменной $remote_addr +использована переменная $binary_remote_addr. +Длина значения переменной $remote_addr может колебаться +от 7 до 15 байт, при этом размер хранимого состояния составляет +либо 32, либо 64 байта на 32-битных платформах, и всегда 64 +байта на 64-битных. +Длина значения переменной $binary_remote_addr всегда +равна 4 байтам, при этом размер состояния всегда равен 32 байтам +на 32-битных платформах и 64 байтам на 64-битных. +В зоне размером 1 мегабайт может разместиться около 32 тысяч состояний +размером 32 байта, или 16 тысяч состояний размером 64 байта. +При переполнении зоны в ответ на последующие запросы сервер будет +возвращать ошибку +. + + + + + +$переменная название размер + +http + + +Эта директива устарела в версии 1.1.8, вместо неё следует +использовать директиву . + + + + +
+ +
diff -r 65431179fb8f -r 8cc01e2179a9 xml/ru/docs/http/ngx_http_limit_req_module.xml --- a/xml/ru/docs/http/ngx_http_limit_req_module.xml Mon Nov 14 15:41:15 2011 +0000 +++ b/xml/ru/docs/http/ngx_http_limit_req_module.xml Mon Nov 14 18:09:03 2011 +0000 @@ -2,7 +2,7 @@ - @@ -10,8 +10,8 @@ Модуль ngx_http_limit_req_module (0.7.21) позволяет ограничить число запросов -для заданной сессии или, как частный случай, с одного адреса. -Ограничение делается с помощью метода leaky bucket. +по заданному ключу или, как частный случай, число запросов с одного IP-адреса. +Ограничение делается с помощью метода “leaky bucket”. @@ -21,7 +21,7 @@ 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 @@ ... location /search/ { - limit_req zone=one burst=5; + limit_req zone=one burst=5; } @@ -40,66 +40,34 @@
- -$переменная zone=название:размер - rate=скорость + + + zone=название + [burst=число] + [nodelay] + http - - -Директива описывает зону, в которой хранятся состояния сессий. -Значения сессий определяется заданной переменной. -Пример использования: - -limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; - - - - -В данном случае состояния сессий хранятся в зоне "one" размером 10 мегабайт -и средняя скорость запросов для этой зоны не может более 1 запроса в секунду. - - - -В качестве сессии используется адрес клиента. -Обратите внимание, что вместо переменной $remote_addr используется -переменная $binary_remote_addr, позволяющая уменьшить размер состояния -до 64 байт. -В зоне размером 1 мегабайт может разместиться около 16 000 состояний -размером 64 байта. - - - -Скорость задаётся в запросах в секунду. -Если же нужна скорость меньше одного запроса в секунду, -то она задаётся в запросах в минуту, например, -ползапроса в секунду — это 30r/m. - - - - - -zone=название burst=число [nodelay] - - -http, server, location +server +location Директива задаёт зону (zone) и максимально возможные всплески запросов (burst). Если скорость запросов превышает описанную в зоне, -то их обработка запроса задерживается так, чтобы запросы обрабывались +то их обработка задерживается так, чтобы запросы обрабатывались с заданной скоростью. Избыточные запросы задерживаются до тех пор, пока их число не превысит заданное число всплесков. -В этом случае запрос завершается кодом "Service unavailable" (503). +В этом случае запрос завершается с ошибкой +. По умолчанию число всплесков равно нулю. Например, директивы -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; } @@ -109,9 +77,9 @@ Если же избыточные запросы в пределах лимита всплесков задерживать -не надо, то нужно использовать параметр nodelay: +не требуется, то следует использовать параметр nodelay: - limit_req zone=one burst=5 nodelay; + limit_req zone=one burst=5 nodelay; @@ -119,16 +87,72 @@ -[info|notice|warn|error] + +info | +notice | +warn | +error + error -http, server, location +http +server +location +0.8.18 + + +Директива задаёт желаемый уровень записи в лог случаев ограничения +числа запросов и задержек при обработке запроса. +Задержки записываются в лог с уровнем на единицу меньшим, чем ограничения, +например, если указано limit_req_log_level notice, +то задержки будут записываться в лог на уровне info. + + + + + + + + $переменная + zone=название:размер + rate=скорость + + +http -Директива (0.8.18) задаёт уровень логирования случаев ограничения -числа запросов и задержек при обработке запроса. -Задержки логируются на один уровень ниже, чем ограничения, например, -если задан "limit_req_log_level notice", то задержки будут логироваться -на уровне info. +Директива задаёт параметры зоны, +которая хранит состояние для разных значений ключа. +Состояние в частности хранит текущее число запросов. +Ключом является значение заданной переменной. +Пример использования: + +limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; + + + + +В данном случае состояния хранятся в зоне “one” размером 10 мегабайт, +и средняя скорость запросов для этой зоны не может превышать +1 запроса в секунду. + + + +В качестве ключа используется IP-адрес клиента. +Обратите внимание, что вместо переменной $remote_addr используется +переменная $binary_remote_addr, позволяющая уменьшить +размер состояния до 64 байт. +В зоне размером 1 мегабайт может разместиться около 16 тысяч состояний +размером 64 байта. +При переполнении зоны в ответ на последующие запросы сервер будет +возвращать ошибку +. + + + +Скорость задаётся в запросах в секунду (r/s). +Если же нужна скорость меньше одного запроса в секунду, +то она задаётся в запросах в минуту (r/m), например, +ползапроса в секунду — это 30r/m. diff -r 65431179fb8f -r 8cc01e2179a9 xml/ru/docs/http/ngx_http_limit_zone_module.xml --- a/xml/ru/docs/http/ngx_http_limit_zone_module.xml Mon Nov 14 15:41:15 2011 +0000 +++ b/xml/ru/docs/http/ngx_http_limit_zone_module.xml Mon Nov 14 18:09:03 2011 +0000 @@ -2,109 +2,18 @@ -
-Модуль ngx_http_limit_zone_module позволяет ограничить число одновременных -соединений для заданной сессии или, как частный случай, с одного адреса. - - -
- - -
- - - -http { - limit_zone one $binary_remote_addr 10m; - - ... - - server { - - ... - - location /download/ { - limit_conn one 1; - } - +В версии 1.1.8 модуль ngx_http_limit_zone_module +был переименован в модуль +ngx_http_limit_conn_module.
- -
- - -название $переменная размер - -http - - -Директива описывает зону, в которой хранятся состояния сессий. -Значения сессий определяется заданной переменной. -Пример использования: - -limit_zone one $binary_remote_addr 10m; - - - - -В качестве сессии используется адрес клиента. -Обратите внимание, что вместо переменной $remote_addr используется -переменная $binary_remote_addr. -Длина значений переменной $remote_addr может быть от 7 до 15 байт, -поэтому размер состоянии равен 32 или 64 байтам. -Длина всех значений переменной $binary_remote_addr всегда 4 байта -и размер состояния всегда 32 байта. -В зоне размером 1 мегабайт может разместиться около 32 000 состояний -размером 32 байта. - - - - - - -зона число - -http, server, location - - -Директива задаёт максимальное число одновременных соединений для одной сессии. -При превышении этого числа запрос завершается кодом "Service unavailable" (503). -Например, директивы - -limit_zone one $binary_remote_addr 10m; - - server { - location /download/ { - limit_conn one 1; - } - - -позволяют не более одного одновременного соединения с одного адреса. - - - - - - -[info|notice|warn|error] -error -http, server, location - - -Директива (0.8.18) задаёт уровень логирования случаев ограничения -числа соединений. - - - - -
-
diff -r 65431179fb8f -r 8cc01e2179a9 xml/ru/docs/index.xml --- a/xml/ru/docs/index.xml Mon Nov 14 15:41:15 2011 +0000 +++ b/xml/ru/docs/index.xml Mon Nov 14 18:09:03 2011 +0000 @@ -183,8 +183,8 @@ - -ngx_http_limit_zone_module + +ngx_http_limit_conn_module diff -r 65431179fb8f -r 8cc01e2179a9 xml/ru/index.xml --- a/xml/ru/index.xml Mon Nov 14 15:41:15 2011 +0000 +++ b/xml/ru/index.xml Mon Nov 14 18:09:03 2011 +0000 @@ -166,7 +166,7 @@ Ограничение числа одновременных -соединений и +соединений и запросов с одного адреса;