Mercurial > hg > nginx-site
changeset 1242:935fe5eb82c4
Upstream: translated the "health_check" and "match" directives.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Tue, 24 Jun 2014 16:46:28 +0400 |
parents | 2246339a6a93 |
children | 831215432a4f |
files | xml/ru/docs/http/ngx_http_upstream_module.xml |
diffstat | 1 files changed, 293 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/xml/ru/docs/http/ngx_http_upstream_module.xml Wed Jul 02 21:19:50 2014 +0400 +++ b/xml/ru/docs/http/ngx_http_upstream_module.xml Tue Jun 24 16:46:28 2014 +0400 @@ -49,6 +49,37 @@ </example> </para> +<para> +Динамически настраиваемая группа, +доступна как часть +<commercial_version>коммерческой подписки</commercial_version>: +<example> +upstream <emphasis>appservers</emphasis> { + zone appservers 64k; + + server appserv1.example.com weight=5; + server appserv2.example.com:8080 fail_timeout=5s slow_start=30s; + server 192.0.2.1 max_fails=3; + + server reserve1.example.com:8080 backup; + server reserve2.example.com:8080 backup; +} + +server { + location / { + proxy_pass http://<emphasis>appservers</emphasis>; + health_check; + } + + location /upstream_conf { + upstream_conf; + allow 127.0.0.1; + deny all; + } +} +</example> +</para> + </section> @@ -502,6 +533,268 @@ </directive> +<directive name="health_check"> +<syntax>[<value>параметры</value>]</syntax> +<default/> +<context>location</context> + +<para> +Активирует периодические проверки работоспособности серверов в +<link id="upstream">группе</link>, указанной в содержащем location. +</para> + +<para> +Могут быть заданы следующие необязательные параметры: +<list type="tag"> + +<tag-name id="interval"> +<literal>interval</literal>=<value>время</value> +</tag-name> +<tag-desc> +задаёт интервал между двумя последовательными проверками, +по умолчанию 5 секунд; +</tag-desc> + +<tag-name id="fails"> +<literal>fails</literal>=<value>число</value> +</tag-name> +<tag-desc> +задаёт число последовательных неуспешных проверок для определённого сервера, +после которых сервер будет считаться неработоспособным, +по умолчанию 1; +</tag-desc> + +<tag-name id="passes"> +<literal>passes</literal>=<value>число</value> +</tag-name> +<tag-desc> +задаёт число последовательных успешных проверок для определённого сервера, +после которых сервер будет считаться работоспособным, +по умолчанию 1; +</tag-desc> + +<tag-name id="uri"> +<literal>uri</literal>=<value>uri</value> +</tag-name> +<tag-desc> +задаёт URI, используемый в запросах, проверяющих работоспособность, +по умолчанию “<literal>/</literal>”; +</tag-desc> + +<tag-name id="hc_match"> +<literal>match</literal>=<value>имя</value> +</tag-name> +<tag-desc> +указывает на блок <literal>match</literal> с условиями, которым должен +удовлетворять ответ, чтобы результат проверки считался успешным; +по умолчанию код ответа должен быть 2xx или 3xx. +</tag-desc> + +</list> +</para> + +<para> +В примере +<example> +location / { + proxy_pass http://backend; + health_check; +} +</example> +каждому серверу группы <literal>backend</literal> +с интервалом в 5 секунд посылаются запросы “<literal>/</literal>”. +Если происходит ошибка или таймаут при работе с сервером, или +код ответа проксируемого сервера не равен +2xx или 3xx, проверка считается неуспешной и сервер +признаётся неработоспособным. +На неработоспособные серверы клиентские запросы передаваться не будут. +</para> + +<para> +Проверки работоспособности могут тестировать код ответа, +наличие или отсутствие определённых полей заголовка и их значений, +а также содержимое тела ответа. +Тесты настраиваются отдельно при помощи директивы <link id="match"/> +и указываются в параметре <literal>match</literal>. +Например: +<example> +http { + server { + ... + location / { + proxy_pass http://backend; + health_check match=welcome; + } + } + + match welcome { + status 200; + header Content-Type = text/html; + body ~ "Welcome to nginx!"; + } +} +</example> +В такой конфигурации успешный ответ на проверочный запрос +должен иметь код 200, тип содержимого “<literal>text/html</literal>” +и “<literal>Welcome to nginx!</literal>” в теле ответа. +</para> + +<para> +Группа должна находиться в <link id="zone">зоне разделяемой памяти</link>. +</para> + +<para> +Если для группы задано несколько проверок, +то при любой неуспешной проверке соответствующий сервер будет +считаться неработоспособным. +</para> + +<para> +<note> +Эта директива доступна как часть +<commercial_version>коммерческой подписки</commercial_version>. +</note> +</para> + +</directive> + + +<directive name="match"> +<syntax block="yes"><value>имя</value></syntax> +<default/> +<context>http</context> + +<para> +Задаёт именованный набор тестов для анализа ответов +на запросы проверки работоспособности. +</para> + +<para> +В ответе могут быть протестированы следующие объекты: +<list type="tag"> + +<tag-name><literal>status 200;</literal></tag-name> +<tag-desc>код ответа равен 200</tag-desc> + +<tag-name><literal>status ! 500;</literal></tag-name> +<tag-desc>код ответа не равен 500</tag-desc> + +<tag-name><literal>status 200 204;</literal></tag-name> +<tag-desc>код ответа равен 200 или 204</tag-desc> + +<tag-name><literal>status ! 301 302;</literal></tag-name> +<tag-desc>код ответа не равен ни 301, ни 302</tag-desc> + +<tag-name><literal>status 200-399;</literal></tag-name> +<tag-desc>код ответа находится в диапазоне от 200 до 399</tag-desc> + +<tag-name><literal>status ! 400-599;</literal></tag-name> +<tag-desc>код ответа находится вне диапазона от 400 до 599</tag-desc> + +<tag-name><literal>status 301-303 307;</literal></tag-name> +<tag-desc>код ответа равен 301, 302, 303 или 307</tag-desc> + +</list> + +<list type="tag"> + +<tag-name><literal>header Content-Type = text/html;</literal></tag-name> +<tag-desc> +заголовок содержит <header>Content-Type</header> +со значением <literal>text/html</literal> +</tag-desc> + +<tag-name><literal>header Content-Type != text/html;</literal></tag-name> +<tag-desc> +заголовок содержит <header>Content-Type</header> +со значением, отличным от <literal>text/html</literal> +</tag-desc> + +<tag-name><literal>header Connection ~ close;</literal></tag-name> +<tag-desc> +заголовок содержит <header>Connection</header> +со значением, совпадающим с регулярным выражением <literal>close</literal> +</tag-desc> + +<tag-name><literal>header Connection !~ close;</literal></tag-name> +<tag-desc> +заголовок содержит <header>Connection</header> +со значением, не совпадающим с регулярным выражением <literal>close</literal> +</tag-desc> + +<tag-name><literal>header Host;</literal></tag-name> +<tag-desc>заголовок содержит <header>Host</header></tag-desc> + +<tag-name><literal>header ! X-Accel-Redirect;</literal></tag-name> +<tag-desc>заголовок не содержит <header>X-Accel-Redirect</header></tag-desc> + +</list> + +<list type="tag"> + +<tag-name><literal>body ~ "Welcome to nginx!";</literal></tag-name> +<tag-desc> +тело ответа совпадает с регулярным выражением +“<literal>Welcome to nginx!</literal>” +</tag-desc> + +<tag-name><literal>body !~ "Welcome to nginx!";</literal></tag-name> +<tag-desc> +тело ответа не совпадает с регулярным выражением +“<literal>Welcome to nginx!</literal>” +</tag-desc> + +</list> +</para> + +<para> +Если задано несколько тестов, +то ответ должен удовлетворять всем тестам. +<note> +Проверяются только первые 256 Кбайт тела ответа. +</note> +</para> + +<para> +Примеры: +<example> +# код ответа 200, тип содержимого "text/html" +# и тело ответа содержит "Welcome to nginx!" +match welcome { + status 200; + header Content-Type = text/html; + body ~ "Welcome to nginx!"; +} +</example> + +<example> +# код ответа не равен 301, 302, 303 и 307 и заголовок не содержит "Refresh:" +match not_redirect { + status ! 301-303 307; + header ! Refresh; +} +</example> + +<example> +# код ответа успешный и сервер не в сервисном режиме +match server_ok { + status 200-399; + body !~ "maintenance mode"; +} +</example> + +</para> + +<para> +<note> +Эта директива доступна как часть +<commercial_version>коммерческой подписки</commercial_version>. +</note> +</para> + +</directive> + + <directive name="queue"> <syntax> <value>число</value>