rewrite

Igor Sysoev is at rambler-co.ru
Thu Feb 10 10:42:43 MSK 2005


On Thu, 10 Feb 2005, Andrey N. Oktyabrski wrote:

> Kpoxa KpoIIIkin wrote:
>>> Но сейчас last используется для прекращения обрабоки текущего набора
>>> правил, а не всего цикла. Поэтому нужно решить, как назвать модификаторы
>>> для прекращения текущего набора и для прекращения всего цикла.
>>> 
>>> Варианты:
>>>    last, exit, quit, continue, again, last_cycle, что-то ещё.
>>> 
>> Предлагаю для конца текущего набора last, а для конца вообще - break;
> А можно и более явно - stop_rewrite

Я сделал в 0.1.18 break. Тут смысл не только в том, чтобы остановить
rewrite, но и в том, чтобы после этого не определялся новый location.

Я изменил пример на сайте - было:

         # rewrite /download/*/mp3/*.any_ext to /download/*/mp3/*.mp3
         rewrite ^/(download/.*)/mp3/(.*)\..*$
                 /$1/mp3/$2.mp3                   last;

         location /download/ {

а стало:

         location /download/ {

             # rewrite /download/*/mp3/*.any_ext to /download/*/mp3/*.mp3
             rewrite ^/(download/.*)/mp3/(.*)\..*$
                     /$1/mp3/$2.mp3                   break;

Если во втором варианте вместо break поставить last, то nginx сделает
десять циклов и скажет 500. А break оставляет конфигурацию текщего
location, то есть, /download/.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list