# HG changeset patch # User Ruslan Ermilov # Date 1328271515 0 # Node ID 1702722eca07eebc85f5c1d54d2e0ffa94a2dc3c # Parent bef9e1a2e3c852558161ed04176d52b4b76561a0 Cleaned up terminology and language used. diff -r bef9e1a2e3c8 -r 1702722eca07 xml/ru/docs/http/ngx_http_rewrite_module.xml --- 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 @@ Модуль ngx_http_rewrite_module позволяет изменять URI с помощью регулярных выражений, делать перенаправления -и выбирать конфигурацию в зависимости от переменных. -Если директивы этого модуля описаны на уровне сервера, то они -выполняются до того, как определяется location для запроса. -Если в выбранном location тоже есть директивы модуля -ngx_http_rewrite_module, то они также выполняются. -Если URI изменился в результате исполнения директив внутри location, -то снова определяется location для уже нового URI. -Этот цикл может повторяться до 10 раз, после чего nginx возвращает -ошибку . +и выбирать конфигурацию по условию. + + + +Директивы модуля ngx_http_rewrite_module +обрабатываются в следующем порядке: + + + +выполняются директивы этого модуля, описанные на уровне +сервера; + + + +ищется location для запроса; + + + +выполняются директивы этого модуля, описанные в выбранном +, +и если они изменяли URI, то ищется новый location для уже нового URI. +Этот цикл может повторяться до 10 раз, после чего возвращается +ошибка . + + + @@ -59,12 +76,12 @@ location -Проверяет истинность условия. -Если оно истинно, -то выполняется указанный в фигурных скобках код и запрос обрабатывается -в соответствии с заданной там же конфигурацией. -Конфигурация внутри директивы if наследуется с -предыдущего уровня. +Проверяется указанное условие. +Если оно истинно, то выполняются указанные в фигурных скобках директивы +этого модуля и запросу назначается конфигурация, указанная внутри +директивы if. +Конфигурации внутри директив if наследуются с +предыдущего уровня конфигурации. @@ -72,7 +89,7 @@ -имя переменной; ложными значениями переменной являются пустая строка “” +имя переменной; ложными значениями переменной являются пустая строка или любая строка, начинающаяся на “0”; @@ -82,14 +99,14 @@ -проверка переменной с помощью регулярного выражения с учётом +соответствие переменной регулярному выражению с учётом регистра символов — “~” и без него — “~*”. В регулярных выражениях можно использовать выделения, которые затем -доступны в виде переменных $1 — $9. +доступны в виде переменных $1..$9. Также можно использовать отрицательные операторы “!~” и “!~*”. Если в регулярном выражении встречаются символы “}” -или “;”, то всё выражение нужно заключить в одинарные +или “;”, то всё выражение следует заключить в одинарные или двойные кавычки. @@ -131,7 +148,6 @@ return 405; } - if ($slow) { limit_rate 10k; } @@ -140,8 +156,10 @@ return 403; } + Значение встроенной переменной $invalid_referer задаётся директивой . + @@ -155,8 +173,8 @@ if -Завершает исполнение кода и возвращает клиенту указанный код. -Можно использовать следующие значения: 204, 400, +Завершает обработку и возвращает клиенту указанный код. +Можно возвращать следующие коды: 204, 400, 402 — 406, 408, 410, 411, 413, 416 и 500 — 504. Кроме того, нестандартный код 444 закрывает соединение без передачи заголовка ответа. @@ -176,22 +194,25 @@ if -Изменяет URI в соответствии с регулярным выражением и строкой замены. -Директивы выполняются в порядке их следования в конфигурационном файле. -С помощью флагов можно досрочно прекратить исполнение директив. -Если строка замены начинается с “http://”, то клиенту -будет возвращено перенаправление и обработка директив также завершается. +Если указанное регулярное выражение соответствует URI, URI изменяется +в соответствии со строкой замены. +Директивы rewrite выполняются последовательно, +в порядке их следования в конфигурационном файле. +С помощью флагов можно прекратить дальнейшую обработку директив. +Если строка замены начинается с “http://” или +“https://”, то обработка завершается и клиенту +возвращается перенаправление. -Флаги могут быть следующими: +Необязательный параметр флаг может быть одним из: last завершает обработку текущего набора директив модуля ngx_http_rewrite_module, -после чего ищется соответствие URI и location; +после чего ищется новый location, соответствующий изменённому URI; break @@ -204,7 +225,7 @@ возвращает временное перенаправление с кодом 302; используется, если заменяющая строка не начинается с -“http://”; +“http://” или “https://”; permanent @@ -218,9 +239,13 @@ Пример: -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; + ... +} @@ -238,9 +263,10 @@ -Если в строке замены указаны аргументы, то предыдущие аргументы запроса -добавляются после них. -Можно отказаться от этого добавления, указав в конце строки замены знак вопроса: +Если в строке замены указаны новые аргументы запроса, то предыдущие +аргументы запроса добавляются после них. +Если такое поведение нежелательно, можно отказаться от этого добавления, +указав в конце строки замены знак вопроса, например: rewrite ^/users/(.*)$ /show?user=$1? last; @@ -248,7 +274,7 @@ Если в регулярном выражении встречаются символы “}” -или “;”, то всё выражение нужно заключить в одинарные +или “;”, то всё выражение следует заключить в одинарные или двойные кавычки. @@ -263,7 +289,7 @@ if -Устанавливает значение для указанной переменной. +Устанавливает значение указанной переменной. В качестве значения можно использовать текст, переменные и их комбинации. @@ -279,8 +305,8 @@ if -Определяет, нужно ли писать в лог предупреждение -о неинициализированной переменной. +Определяет, нужно ли писать в лог предупреждения о неинициализированных +переменных. @@ -292,8 +318,8 @@ Директивы модуля ngx_http_rewrite_module -компилируются на стадии конфигурации во внутренние коды, -исполняемые во время запроса интерпретатором. +компилируются на стадии конфигурации во внутренние инструкции, +интерпретируемые во время обработки запроса. Интерпретатор представляет из себя простую стековую виртуальную машину. @@ -312,7 +338,7 @@ rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break; } -будет скомпилированы в такие коды: +будут транслированы в такие инструкции: переменная $forbidden проверка на ноль @@ -332,15 +358,13 @@ -Обратите внимание, что кода для директивы +Обратите внимание, что инструкций для директивы нет, поскольку она не имеет отношения к модулю ngx_http_rewrite_module. -Для блока создаётся такая же конфигурация, как и для блока -. -Если условие истинно, то запрос получает конфигурацию, соответствующую -блоку if, -и в этой конфигурации limit_rate равен 10k. +Для блока создаётся отдельная конфигурация, +Если условие истинно, запрос получает эту конфигурацию, +и в ней limit_rate равен 10k. @@ -348,12 +372,12 @@ rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break; -можно сделать на один код меньше, если в регулярном выражении включить -первый слэш в скобки: +можно сделать на одну инструкцию меньше, если в регулярном выражении перенести +первый слэш внутрь скобок: rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; -тогда её коды будут выглядеть так: +Тогда соответствующие инструкции будут выглядеть так: проверка регулярного выражения копирование $1