comparison xml/ru/docs/http/ngx_http_limit_req_module.xml @ 76:4a4caa566120

Russian documentation import. Changes in module.dtd: <example> now allowed to contain <value> and <emphasis> elements (we need this to show important parts in examples), less strict checking of <directive> syntax (we don't want to fully document some directives, notably deprecated ones). Known issues: 1. <syntax> elements are preserved as is, they will require manual conversion (likely to some not-yet-existed format a la DocBook cmdsynopsis, as currently used one seems to be incomplete); 2. <value> no longer corresponds to replaceable content, and it's use in examples isn't correct; 3. <link doc="document#fragment"> doesn't work with current xslt, either should be supported or changed to <link doc="document" id="fragment">. The following files are intentionally omitted: maillists.xml (support.xml should be used instead), experimental.xml (obsolete), faq.xml (conflicts with existing one, needs discussion). Not yet linked to site.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 11 Oct 2011 12:57:50 +0000
parents
children 1d315ef37215
comparison
equal deleted inserted replaced
75:2bf4cd2787c5 76:4a4caa566120
1 <?xml version="1.0" encoding="utf-8"?>
2
3 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
4
5 <module name="Директивы модуля ngx_http_limit_req_module"
6 link="/ru/docs/http/ngx_http_limit_req_module.html"
7 lang="ru">
8
9 <section name="" id="summary">
10
11 <para>
12 Модуль ngx_http_limit_req_module (0.7.21) позволяет ограничить число запросов
13 для заданной сессии или, как частный случай, с одного адреса.
14 Ограничение делается с помощью метода leaky bucket.
15 </para>
16
17 </section>
18
19 <section name="Пример конфигурации" id="example">
20
21 <para>
22 <example>
23 http {
24 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
25
26 ...
27
28 server {
29
30 ...
31
32 location /search/ {
33 limit_req zone=one burst=5;
34 }
35 </example>
36 </para>
37
38 </section>
39
40
41 <section name="Директивы" id="directives">
42
43 <directive name="limit_req_zone">
44 <syntax>limit_req_zone <value>$переменная zone=название:размер
45 rate=скорость</value></syntax>
46 <default>нет</default>
47 <context>http</context>
48
49 <para>
50 Директива описывает зону, в которой хранятся состояния сессий.
51 Значения сессий определяется заданной переменной.
52 Пример использования:
53 <example>
54 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
55 </example>
56 </para>
57
58 <para>
59 В данном случае состояния сессий хранятся в зоне "one" размером 10 мегабайт
60 и средняя скорость запросов для этой зоны не может более 1 запроса в секунду.
61 </para>
62
63 <para>
64 В качестве сессии используется адрес клиента.
65 Обратите внимание, что вместо переменной $remote_addr используется
66 переменная $binary_remote_addr, позволяющая уменьшить размер состояния
67 до 64 байт.
68 В зоне размером 1 мегабайт может разместиться около 16 000 состояний
69 размером 64 байта.
70 </para>
71
72 <para>
73 Скорость задаётся в запросах в секунду.
74 Если же нужна скорость меньше одного запроса в секунду,
75 то она задаётся в запросах в минуту, например,
76 ползапроса в секунду — это 30r/m.
77 </para>
78
79 </directive>
80
81 <directive name="limit_req">
82 <syntax>limit_req <value>zone=название burst=число [nodelay]</value>
83 </syntax>
84 <default>нет</default>
85 <context>http, server, location</context>
86
87 <para>
88 Директива задаёт зону (zone) и максимально возможные всплески запросов (burst).
89 Если скорость запросов превышает описанную в зоне,
90 то их обработка запроса задерживается так, чтобы запросы обрабывались
91 с заданной скоростью.
92 Избыточные запросы задерживаются до тех пор, пока их число
93 не превысит заданное число всплесков.
94 В этом случае запрос завершается кодом "Service unavailable" (503).
95 По умолчанию число всплесков равно нулю.
96 Например, директивы
97 <example>
98 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
99
100 server {
101 location /search/ {
102 limit_req zone=one burst=5;
103 }
104
105 </example>
106 позволяют в среднем не более 1 запроса в секунду
107 со всплесками не более 5 запросов.
108 </para>
109
110 <para>
111 Если же избыточные запросы в пределах лимита всплесков задерживать
112 не надо, то нужно использовать параметр nodelay:
113 <example>
114 limit_req zone=one burst=5 nodelay;
115 </example>
116 </para>
117
118 </directive>
119
120
121 <directive name="limit_req_log_level">
122 <syntax>limit_req_log_level <value>[info|notice|warn|error]</value></syntax>
123 <default>limit_req_log_level error</default>
124 <context>http, server, location</context>
125
126 <para>
127 Директива (0.8.18) задаёт уровень логирования случаев ограничения
128 числа запросов и задержек при обработке запроса.
129 Задержки логируются на один уровень ниже, чем ограничения, например,
130 если задан "limit_req_log_level notice", то задержки будут логироваться
131 на уровне info.
132 </para>
133
134 </directive>
135
136 </section>
137
138 </module>