comparison xml/ru/docs/http/ngx_http_upstream_module.xml @ 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
comparison
equal deleted inserted replaced
1241:2246339a6a93 1242:935fe5eb82c4
42 } 42 }
43 43
44 server { 44 server {
45 location / { 45 location / {
46 proxy_pass http://<emphasis>backend</emphasis>; 46 proxy_pass http://<emphasis>backend</emphasis>;
47 }
48 }
49 </example>
50 </para>
51
52 <para>
53 Динамически настраиваемая группа,
54 доступна как часть
55 <commercial_version>коммерческой подписки</commercial_version>:
56 <example>
57 upstream <emphasis>appservers</emphasis> {
58 zone appservers 64k;
59
60 server appserv1.example.com weight=5;
61 server appserv2.example.com:8080 fail_timeout=5s slow_start=30s;
62 server 192.0.2.1 max_fails=3;
63
64 server reserve1.example.com:8080 backup;
65 server reserve2.example.com:8080 backup;
66 }
67
68 server {
69 location / {
70 proxy_pass http://<emphasis>appservers</emphasis>;
71 health_check;
72 }
73
74 location /upstream_conf {
75 upstream_conf;
76 allow 127.0.0.1;
77 deny all;
47 } 78 }
48 } 79 }
49 </example> 80 </example>
50 </para> 81 </para>
51 82
500 </para> 531 </para>
501 532
502 </directive> 533 </directive>
503 534
504 535
536 <directive name="health_check">
537 <syntax>[<value>параметры</value>]</syntax>
538 <default/>
539 <context>location</context>
540
541 <para>
542 Активирует периодические проверки работоспособности серверов в
543 <link id="upstream">группе</link>, указанной в содержащем location.
544 </para>
545
546 <para>
547 Могут быть заданы следующие необязательные параметры:
548 <list type="tag">
549
550 <tag-name id="interval">
551 <literal>interval</literal>=<value>время</value>
552 </tag-name>
553 <tag-desc>
554 задаёт интервал между двумя последовательными проверками,
555 по умолчанию 5 секунд;
556 </tag-desc>
557
558 <tag-name id="fails">
559 <literal>fails</literal>=<value>число</value>
560 </tag-name>
561 <tag-desc>
562 задаёт число последовательных неуспешных проверок для определённого сервера,
563 после которых сервер будет считаться неработоспособным,
564 по умолчанию 1;
565 </tag-desc>
566
567 <tag-name id="passes">
568 <literal>passes</literal>=<value>число</value>
569 </tag-name>
570 <tag-desc>
571 задаёт число последовательных успешных проверок для определённого сервера,
572 после которых сервер будет считаться работоспособным,
573 по умолчанию 1;
574 </tag-desc>
575
576 <tag-name id="uri">
577 <literal>uri</literal>=<value>uri</value>
578 </tag-name>
579 <tag-desc>
580 задаёт URI, используемый в запросах, проверяющих работоспособность,
581 по умолчанию “<literal>/</literal>”;
582 </tag-desc>
583
584 <tag-name id="hc_match">
585 <literal>match</literal>=<value>имя</value>
586 </tag-name>
587 <tag-desc>
588 указывает на блок <literal>match</literal> с условиями, которым должен
589 удовлетворять ответ, чтобы результат проверки считался успешным;
590 по умолчанию код ответа должен быть 2xx или 3xx.
591 </tag-desc>
592
593 </list>
594 </para>
595
596 <para>
597 В примере
598 <example>
599 location / {
600 proxy_pass http://backend;
601 health_check;
602 }
603 </example>
604 каждому серверу группы <literal>backend</literal>
605 с интервалом в 5 секунд посылаются запросы “<literal>/</literal>”.
606 Если происходит ошибка или таймаут при работе с сервером, или
607 код ответа проксируемого сервера не равен
608 2xx или 3xx, проверка считается неуспешной и сервер
609 признаётся неработоспособным.
610 На неработоспособные серверы клиентские запросы передаваться не будут.
611 </para>
612
613 <para>
614 Проверки работоспособности могут тестировать код ответа,
615 наличие или отсутствие определённых полей заголовка и их значений,
616 а также содержимое тела ответа.
617 Тесты настраиваются отдельно при помощи директивы <link id="match"/>
618 и указываются в параметре <literal>match</literal>.
619 Например:
620 <example>
621 http {
622 server {
623 ...
624 location / {
625 proxy_pass http://backend;
626 health_check match=welcome;
627 }
628 }
629
630 match welcome {
631 status 200;
632 header Content-Type = text/html;
633 body ~ "Welcome to nginx!";
634 }
635 }
636 </example>
637 В такой конфигурации успешный ответ на проверочный запрос
638 должен иметь код 200, тип содержимого “<literal>text/html</literal>”
639 и “<literal>Welcome to nginx!</literal>” в теле ответа.
640 </para>
641
642 <para>
643 Группа должна находиться в <link id="zone">зоне разделяемой памяти</link>.
644 </para>
645
646 <para>
647 Если для группы задано несколько проверок,
648 то при любой неуспешной проверке соответствующий сервер будет
649 считаться неработоспособным.
650 </para>
651
652 <para>
653 <note>
654 Эта директива доступна как часть
655 <commercial_version>коммерческой подписки</commercial_version>.
656 </note>
657 </para>
658
659 </directive>
660
661
662 <directive name="match">
663 <syntax block="yes"><value>имя</value></syntax>
664 <default/>
665 <context>http</context>
666
667 <para>
668 Задаёт именованный набор тестов для анализа ответов
669 на запросы проверки работоспособности.
670 </para>
671
672 <para>
673 В ответе могут быть протестированы следующие объекты:
674 <list type="tag">
675
676 <tag-name><literal>status 200;</literal></tag-name>
677 <tag-desc>код ответа равен 200</tag-desc>
678
679 <tag-name><literal>status ! 500;</literal></tag-name>
680 <tag-desc>код ответа не равен 500</tag-desc>
681
682 <tag-name><literal>status 200 204;</literal></tag-name>
683 <tag-desc>код ответа равен 200 или 204</tag-desc>
684
685 <tag-name><literal>status ! 301 302;</literal></tag-name>
686 <tag-desc>код ответа не равен ни 301, ни 302</tag-desc>
687
688 <tag-name><literal>status 200-399;</literal></tag-name>
689 <tag-desc>код ответа находится в диапазоне от 200 до 399</tag-desc>
690
691 <tag-name><literal>status ! 400-599;</literal></tag-name>
692 <tag-desc>код ответа находится вне диапазона от 400 до 599</tag-desc>
693
694 <tag-name><literal>status 301-303 307;</literal></tag-name>
695 <tag-desc>код ответа равен 301, 302, 303 или 307</tag-desc>
696
697 </list>
698
699 <list type="tag">
700
701 <tag-name><literal>header Content-Type = text/html;</literal></tag-name>
702 <tag-desc>
703 заголовок содержит <header>Content-Type</header>
704 со значением <literal>text/html</literal>
705 </tag-desc>
706
707 <tag-name><literal>header Content-Type != text/html;</literal></tag-name>
708 <tag-desc>
709 заголовок содержит <header>Content-Type</header>
710 со значением, отличным от <literal>text/html</literal>
711 </tag-desc>
712
713 <tag-name><literal>header Connection ~ close;</literal></tag-name>
714 <tag-desc>
715 заголовок содержит <header>Connection</header>
716 со значением, совпадающим с регулярным выражением <literal>close</literal>
717 </tag-desc>
718
719 <tag-name><literal>header Connection !~ close;</literal></tag-name>
720 <tag-desc>
721 заголовок содержит <header>Connection</header>
722 со значением, не совпадающим с регулярным выражением <literal>close</literal>
723 </tag-desc>
724
725 <tag-name><literal>header Host;</literal></tag-name>
726 <tag-desc>заголовок содержит <header>Host</header></tag-desc>
727
728 <tag-name><literal>header ! X-Accel-Redirect;</literal></tag-name>
729 <tag-desc>заголовок не содержит <header>X-Accel-Redirect</header></tag-desc>
730
731 </list>
732
733 <list type="tag">
734
735 <tag-name><literal>body ~ "Welcome to nginx!";</literal></tag-name>
736 <tag-desc>
737 тело ответа совпадает с регулярным выражением
738 “<literal>Welcome to nginx!</literal>”
739 </tag-desc>
740
741 <tag-name><literal>body !~ "Welcome to nginx!";</literal></tag-name>
742 <tag-desc>
743 тело ответа не совпадает с регулярным выражением
744 “<literal>Welcome to nginx!</literal>”
745 </tag-desc>
746
747 </list>
748 </para>
749
750 <para>
751 Если задано несколько тестов,
752 то ответ должен удовлетворять всем тестам.
753 <note>
754 Проверяются только первые 256 Кбайт тела ответа.
755 </note>
756 </para>
757
758 <para>
759 Примеры:
760 <example>
761 # код ответа 200, тип содержимого "text/html"
762 # и тело ответа содержит "Welcome to nginx!"
763 match welcome {
764 status 200;
765 header Content-Type = text/html;
766 body ~ "Welcome to nginx!";
767 }
768 </example>
769
770 <example>
771 # код ответа не равен 301, 302, 303 и 307 и заголовок не содержит "Refresh:"
772 match not_redirect {
773 status ! 301-303 307;
774 header ! Refresh;
775 }
776 </example>
777
778 <example>
779 # код ответа успешный и сервер не в сервисном режиме
780 match server_ok {
781 status 200-399;
782 body !~ "maintenance mode";
783 }
784 </example>
785
786 </para>
787
788 <para>
789 <note>
790 Эта директива доступна как часть
791 <commercial_version>коммерческой подписки</commercial_version>.
792 </note>
793 </para>
794
795 </directive>
796
797
505 <directive name="queue"> 798 <directive name="queue">
506 <syntax> 799 <syntax>
507 <value>число</value> 800 <value>число</value>
508 [<literal>timeout</literal>=<value>время</value>]</syntax> 801 [<literal>timeout</literal>=<value>время</value>]</syntax>
509 <default/> 802 <default/>