Mercurial > hg > nginx-site
changeset 391:1702722eca07
Cleaned up terminology and language used.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Fri, 03 Feb 2012 12:18:35 +0000 |
parents | bef9e1a2e3c8 |
children | 5fd99d37a3e6 |
files | xml/ru/docs/http/ngx_http_rewrite_module.xml |
diffstat | 1 files changed, 76 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- a/xml/ru/docs/http/ngx_http_rewrite_module.xml Fri Feb 03 12:16:28 2012 +0000 +++ b/xml/ru/docs/http/ngx_http_rewrite_module.xml Fri Feb 03 12:18:35 2012 +0000 @@ -11,15 +11,32 @@ <para> Модуль <literal>ngx_http_rewrite_module</literal> позволяет изменять URI с помощью регулярных выражений, делать перенаправления -и выбирать конфигурацию в зависимости от переменных. -Если директивы этого модуля описаны на уровне сервера, то они -выполняются до того, как определяется location для запроса. -Если в выбранном location тоже есть директивы модуля -<literal>ngx_http_rewrite_module</literal>, то они также выполняются. -Если URI изменился в результате исполнения директив внутри location, -то снова определяется location для уже нового URI. -Этот цикл может повторяться до 10 раз, после чего nginx возвращает -ошибку <http-status code="500" text="Internal Server Error"/>. +и выбирать конфигурацию по условию. +</para> + +<para> +Директивы модуля <literal>ngx_http_rewrite_module</literal> +обрабатываются в следующем порядке: +<list type="bullet"> + +<listitem> +выполняются директивы этого модуля, описанные на уровне +<link doc="ngx_http_core_module.xml" id="server">сервера</link>; +</listitem> + +<listitem> +ищется location для запроса; +</listitem> + +<listitem> +выполняются директивы этого модуля, описанные в выбранном +<link doc="ngx_http_core_module.xml" id="location"/>, +и если они изменяли URI, то ищется новый location для уже нового URI. +Этот цикл может повторяться до 10 раз, после чего возвращается +ошибка <http-status code="500" text="Internal Server Error"/>. +</listitem> + +</list> </para> </section> @@ -59,12 +76,12 @@ <context>location</context> <para> -Проверяет истинность условия. -Если оно истинно, -то выполняется указанный в фигурных скобках код и запрос обрабатывается -в соответствии с заданной там же конфигурацией. -Конфигурация внутри директивы <literal>if</literal> наследуется с -предыдущего уровня. +Проверяется указанное <value>условие</value>. +Если оно истинно, то выполняются указанные в фигурных скобках директивы +этого модуля и запросу назначается конфигурация, указанная внутри +директивы <literal>if</literal>. +Конфигурации внутри директив <literal>if</literal> наследуются с +предыдущего уровня конфигурации. </para> <para> @@ -72,7 +89,7 @@ <list type="bullet"> <listitem> -имя переменной; ложными значениями переменной являются пустая строка “” +имя переменной; ложными значениями переменной являются пустая строка или любая строка, начинающаяся на “<literal>0</literal>”; </listitem> @@ -82,14 +99,14 @@ </listitem> <listitem> -проверка переменной с помощью регулярного выражения с учётом +соответствие переменной регулярному выражению с учётом регистра символов — “<literal>~</literal>” и без него — “<literal>~*</literal>”. В регулярных выражениях можно использовать выделения, которые затем -доступны в виде переменных <var>$1</var> — <var>$9</var>. +доступны в виде переменных <var>$1</var>..<var>$9</var>. Также можно использовать отрицательные операторы “<literal>!~</literal>” и “<literal>!~*</literal>”. Если в регулярном выражении встречаются символы “<literal>}</literal>” -или “<literal>;</literal>”, то всё выражение нужно заключить в одинарные +или “<literal>;</literal>”, то всё выражение следует заключить в одинарные или двойные кавычки. </listitem> @@ -131,7 +148,6 @@ return 405; } - if ($slow) { limit_rate 10k; } @@ -140,8 +156,10 @@ return 403; } </example> +<note> Значение встроенной переменной <var>$invalid_referer</var> задаётся директивой <link doc="ngx_http_referer_module.xml" id="valid_referers"/>. +</note> </para> </directive> @@ -155,8 +173,8 @@ <context>if</context> <para> -Завершает исполнение кода и возвращает клиенту указанный код. -Можно использовать следующие значения: 204, 400, +Завершает обработку и возвращает клиенту указанный <value>код</value>. +Можно возвращать следующие коды: 204, 400, 402 — 406, 408, 410, 411, 413, 416 и 500 — 504. Кроме того, нестандартный код 444 закрывает соединение без передачи заголовка ответа. @@ -176,22 +194,25 @@ <context>if</context> <para> -Изменяет URI в соответствии с регулярным выражением и строкой замены. -Директивы выполняются в порядке их следования в конфигурационном файле. -С помощью флагов можно досрочно прекратить исполнение директив. -Если строка замены начинается с “<literal>http://</literal>”, то клиенту -будет возвращено перенаправление и обработка директив также завершается. +Если указанное регулярное выражение соответствует URI, URI изменяется +в соответствии со строкой замены. +Директивы <literal>rewrite</literal> выполняются последовательно, +в порядке их следования в конфигурационном файле. +С помощью флагов можно прекратить дальнейшую обработку директив. +Если строка замены начинается с “<literal>http://</literal>” или +“<literal>https://</literal>”, то обработка завершается и клиенту +возвращается перенаправление. </para> <para> -Флаги могут быть следующими: +Необязательный параметр <value>флаг</value> может быть одним из: <list type="tag"> <tag-name><literal>last</literal></tag-name> <tag-desc> завершает обработку текущего набора директив модуля <literal>ngx_http_rewrite_module</literal>, -после чего ищется соответствие URI и location; +после чего ищется новый location, соответствующий изменённому URI; </tag-desc> <tag-name><literal>break</literal></tag-name> @@ -204,7 +225,7 @@ <tag-desc> возвращает временное перенаправление с кодом 302; используется, если заменяющая строка не начинается с -“<literal>http://</literal>”; +“<literal>http://</literal>” или “<literal>https://</literal>”; </tag-desc> <tag-name><literal>permanent</literal></tag-name> @@ -218,9 +239,13 @@ <para> Пример: <example> -rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; -rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last; -return 403; +server { + ... + rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; + rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last; + return 403; + ... +} </example> </para> @@ -238,9 +263,10 @@ </para> <para> -Если в строке замены указаны аргументы, то предыдущие аргументы запроса -добавляются после них. -Можно отказаться от этого добавления, указав в конце строки замены знак вопроса: +Если в строке замены указаны новые аргументы запроса, то предыдущие +аргументы запроса добавляются после них. +Если такое поведение нежелательно, можно отказаться от этого добавления, +указав в конце строки замены знак вопроса, например: <example> rewrite ^/users/(.*)$ /show?user=$1? last; </example> @@ -248,7 +274,7 @@ <para> Если в регулярном выражении встречаются символы “<literal>}</literal>” -или “<literal>;</literal>”, то всё выражение нужно заключить в одинарные +или “<literal>;</literal>”, то всё выражение следует заключить в одинарные или двойные кавычки. </para> @@ -263,7 +289,7 @@ <context>if</context> <para> -Устанавливает значение для указанной переменной. +Устанавливает значение указанной переменной. В качестве значения можно использовать текст, переменные и их комбинации. </para> @@ -279,8 +305,8 @@ <context>if</context> <para> -Определяет, нужно ли писать в лог предупреждение -о неинициализированной переменной. +Определяет, нужно ли писать в лог предупреждения о неинициализированных +переменных. </para> </directive> @@ -292,8 +318,8 @@ <para> Директивы модуля <literal>ngx_http_rewrite_module</literal> -компилируются на стадии конфигурации во внутренние коды, -исполняемые во время запроса интерпретатором. +компилируются на стадии конфигурации во внутренние инструкции, +интерпретируемые во время обработки запроса. Интерпретатор представляет из себя простую стековую виртуальную машину. </para> @@ -312,7 +338,7 @@ rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break; } </example> -будет скомпилированы в такие коды: +будут транслированы в такие инструкции: <example> переменная $forbidden проверка на ноль @@ -332,15 +358,13 @@ </para> <para> -Обратите внимание, что кода для директивы +Обратите внимание, что инструкций для директивы <link doc="ngx_http_core_module.xml" id="limit_rate"/> нет, поскольку она не имеет отношения к модулю <literal>ngx_http_rewrite_module</literal>. -Для блока <link id="if"/> создаётся такая же конфигурация, как и для блока -<link doc="ngx_http_core_module.xml" id="location"/>. -Если условие истинно, то запрос получает конфигурацию, соответствующую -блоку <literal>if</literal>, -и в этой конфигурации <literal>limit_rate</literal> равен 10k. +Для блока <link id="if"/> создаётся отдельная конфигурация, +Если условие истинно, запрос получает эту конфигурацию, +и в ней <literal>limit_rate</literal> равен 10k. </para> <para> @@ -348,12 +372,12 @@ <example> rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break; </example> -можно сделать на один код меньше, если в регулярном выражении включить -первый слэш в скобки: +можно сделать на одну инструкцию меньше, если в регулярном выражении перенести +первый слэш внутрь скобок: <example> rewrite ^(<emphasis>/</emphasis>download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; </example> -тогда её коды будут выглядеть так: +Тогда соответствующие инструкции будут выглядеть так: <example> проверка регулярного выражения копирование $1