Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: пожелания по документации rewrite
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 mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|