Re: пожелания по документации rewrite
Ruslan Ermilov
ru at nginx.com
Fri Nov 23 13:07:51 UTC 2012
On Fri, Nov 23, 2012 at 02:44:53PM +0400, Maxim Dounin wrote:
> Hello!
>
> On Fri, Nov 23, 2012 at 01:58:18PM +0400, Anton Yuzhaninov wrote:
>
> > Тз текущего описания rewrite не очевидно, что после обычного rewrite
> > будет использовкаться конфигурация из нового location, а при rewrite
> > ... break остается конфигурация текущего location.
> >
> > Например с таким конфигом:
> >
> > location = /test1.txt {
> > add_header X-Location test1;
> > deny all;
> > }
> >
> > location = /test2.txt {
> > add_header X-Location test2;
> > rewrite ^ /test1.txt break;
> > }
> >
> > location = /test3.txt {
> > add_header X-Location test3;
> > rewrite ^ /test2.txt;
> > }
> >
> > При запросе на /test3.txt будет отдан файл test1.txt, с заголовком test2.
> >
> > Було бы неплохо упомянуть в документации такую особенность rewrite break.
>
> Всмысле - прописать явно, что break "завершает обработку ..." без
> поиска нового location'а? Так-то там даже пример про это есть.
> Но вообще да, наверное имеет смысл.
Так плохо, т.к. rewrite ... break или break (ещё одно место),
указанные на уровне server, не отключат поиск нового location'а.
Моё предложение такое.
Было:
Директивы модуля ngx_http_rewrite_module обрабатываются в следующем порядке:
- выполняются директивы этого модуля, описанные на уровне сервера;
- ищется location для запроса;
- выполняются директивы этого модуля, описанные в выбранном location, и если
они изменяли URI, то ищется новый location для уже нового URI. Этот цикл
может повторяться до 10 раз, после чего возвращается ошибка 500 (Internal
Server Error).
Стало:
[...]
- выполняются директивы этого модуля, описанные в выбранном location, и если
они изменяли URI и не было break, то ищется новый location для уже нового URI.
Этот цикл может повторяться до 10 раз, после чего возвращается ошибка 500
(Internal Server Error).
Подробная информация о списке рассылки nginx-ru