Mercurial > hg > nginx-site
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/> |