ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rewrite



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




 




Copyright © Lexa Software, 1996-2009.