Mercurial > hg > nginx-site
comparison xml/ru/docs/http/ngx_http_proxy_module.xml @ 238:e33fc8541217
- "proxy_redirect" supports variables in the first parameter,
- "proxy_redirect" supports regular expressions,
- "proxy_redirect default" doesn't work if "proxy_pass" references variables.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Tue, 13 Dec 2011 20:23:07 +0000 |
parents | bfe3eff81d04 |
children | c78b2d6fe261 |
comparison
equal
deleted
inserted
replaced
237:48a5c2083270 | 238:e33fc8541217 |
---|---|
526 | 526 |
527 </directive> | 527 </directive> |
528 | 528 |
529 | 529 |
530 <directive name="proxy_redirect"> | 530 <directive name="proxy_redirect"> |
531 <syntax><value>[default|off|редирект замена]</value> | 531 <syntax> |
532 <value>default</value> | | |
533 <value>off</value> | | |
534 <argument>редирект замена</argument> | |
532 </syntax> | 535 </syntax> |
533 <default>default</default> | 536 <default>default</default> |
534 <context>http, server, location</context> | 537 <context>http</context> |
535 | 538 <context>server</context> |
536 <para> | 539 <context>location</context> |
537 Директива задаёт текст, который нужно изменить в строках заголовка "Location" | 540 |
538 и "Refresh" в ответе проксируемого сервера. Предположим, проксируемый сервер | 541 <para> |
539 вернул строку "Location: http://localhost:8000/two/some/uri/". Директива | 542 Директива задаёт текст, который нужно изменить в строках заголовка |
540 <example> | 543 <header>Location</header> и <header>Refresh</header> в ответе |
541 proxy_redirect http://localhost:8000/two/ http://frontend/one/; | 544 проксируемого сервера. |
542 </example> | 545 Предположим, проксируемый сервер вернул строку |
543 перепишет эту строку в виде "Location: http://frontend/one/some/uri/". | 546 <header>Location: http://localhost:8000/two/some/uri/</header>. |
547 Директива | |
548 <example> | |
549 proxy_redirect http://localhost:8000/two/ http://frontend/one/; | |
550 </example> | |
551 перепишет эту строку в виде | |
552 <header>Location: http://frontend/one/some/uri/</header>. | |
544 </para> | 553 </para> |
545 | 554 |
546 <para> | 555 <para> |
547 В заменяемой строке можно не указывать имя сервера: | 556 В заменяемой строке можно не указывать имя сервера: |
548 <example> | 557 <example> |
549 proxy_redirect http://localhost:8000/two/ /; | 558 proxy_redirect http://localhost:8000/two/ /; |
550 </example> | 559 </example> |
551 тогда будет поставлено основное имя сервера и порт, если он отличен от 80. | 560 тогда будет подставлено основное имя сервера и порт, если он отличен от 80. |
552 </para> | 561 </para> |
553 | 562 |
554 <para> | 563 <para> |
555 Изменение по умолчанию, задаваемое параметром "default", использует | 564 Изменение по умолчанию, задаваемое значением <value>default</value>, использует |
556 параметры директив location и proxy_pass. | 565 параметры директив <link doc="ngx_http_core_module.xml" id="location"/> и |
566 <link id="proxy_pass"/>. | |
557 Поэтому две нижеприведённые конфигурации одинаковы: | 567 Поэтому две нижеприведённые конфигурации одинаковы: |
558 <example> | 568 <example> |
559 location /one/ { | 569 location /one/ { |
560 proxy_pass http://upstream:port/two/; | 570 proxy_pass http://upstream:port/two/; |
561 proxy_redirect default; | 571 proxy_redirect default; |
562 </example> | 572 </example> |
563 | 573 |
564 <example> | 574 <example> |
565 location /one/ { | 575 location /one/ { |
566 proxy_pass http://upstream:port/two/; | 576 proxy_pass http://upstream:port/two/; |
567 proxy_redirect http://upstream:port/two/ /one/; | 577 proxy_redirect http://upstream:port/two/ /one/; |
568 </example> | 578 </example> |
579 Значение <value>default</value> недопустимо, если в <link id="proxy_pass"/> | |
580 используются переменные. | |
569 </para> | 581 </para> |
570 | 582 |
571 <para> | 583 <para> |
572 В заменяемой строке можно использовать переменные: | 584 В заменяемой строке можно использовать переменные: |
573 <example> | 585 <example> |
574 proxy_redirect http://localhost:8000/ http://$host:$server_port/; | 586 proxy_redirect http://localhost:8000/ http://$host:$server_port/; |
587 </example> | |
588 </para> | |
589 | |
590 <para> | |
591 В редиректе тоже можно использовать (1.1.11) переменные: | |
592 <example> | |
593 proxy_redirect http://$proxy_host:8000/ /; | |
594 </example> | |
595 </para> | |
596 | |
597 <para> | |
598 Директиву также можно задать (1.1.11) при помощи регулярных выражений. | |
599 При этом <argument>редирект</argument> должен начинаться либо с символа | |
600 “<code>~</code>”, если при сравнении следует учитывать регистр символов, | |
601 либо с символов “<code>~*</code>”, если регистр символов учитывать не нужно. | |
602 Регулярное выражение может содержать именованные и позиционные выделения, | |
603 а <argument>замена</argument> на них ссылаться: | |
604 <example> | |
605 proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2; | |
606 proxy_redirect ~*/user/([^/]+)/(.+)$ http://$1.example.com/$2; | |
575 </example> | 607 </example> |
576 </para> | 608 </para> |
577 | 609 |
578 <para> | 610 <para> |
579 Директив может быть несколько: | 611 Директив может быть несколько: |
580 <example> | 612 <example> |
581 proxy_redirect default; | 613 proxy_redirect default; |
582 proxy_redirect http://localhost:8000/ /; | 614 proxy_redirect http://localhost:8000/ /; |
583 proxy_redirect http://www.example.com/ /; | 615 proxy_redirect http://www.example.com/ /; |
584 </example> | 616 </example> |
585 </para> | 617 </para> |
586 | 618 |
587 <para> | 619 <para> |
588 Параметр "off" запрещает все директивы proxy_redirect на данном уровне: | 620 Значение <value>off</value> запрещает все директивы <code>proxy_redirect</code> |
589 <example> | 621 на данном уровне: |
590 proxy_redirect off; | 622 <example> |
591 proxy_redirect default; | 623 proxy_redirect off; |
592 proxy_redirect http://localhost:8000/ /; | 624 proxy_redirect default; |
593 proxy_redirect http://www.example.com/ /; | 625 proxy_redirect http://localhost:8000/ /; |
626 proxy_redirect http://www.example.com/ /; | |
594 </example> | 627 </example> |
595 </para> | 628 </para> |
596 | 629 |
597 <para> | 630 <para> |
598 С помощью этой директивы можно также добавлять имя хоста к относительным | 631 С помощью этой директивы можно также добавлять имя хоста к относительным |
599 редиректам, выдаваемым проксируемым сервером: | 632 редиректам, выдаваемым проксируемым сервером: |
600 <example> | 633 <example> |
601 proxy_redirect / /; | 634 proxy_redirect / /; |
602 </example> | 635 </example> |
603 </para> | 636 </para> |
604 | 637 |
605 </directive> | 638 </directive> |
606 | 639 |