Но сейчас 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