Re: В каком порядке обрабатываются location?
Maxim Dounin
mdounin на mdounin.ru
Пн Фев 12 13:51:46 UTC 2018
Hello!
On Mon, Feb 12, 2018 at 04:31:18PM +0300, CoDDoC wrote:
> Доброе время суток!
> Слегка запутался в порядке обработки локейшенов.
> Такая структура:
>
> /1/index.html
> /23/index.html
> /456/index.html
> /7890/index.html
>
> Все файлы index.html, естественно, разные.
>
> Соответственно, тестовый конфиг:
>
> server {
> ....
> location = /1/ { rewrite ^ /1/index.html break; }
> location = /23/ { rewrite ^ /23/index.html break; }
> location = /456/ { rewrite ^ /456/index.html break; }
> location = /7890/ { rewrite ^ /7890/index.html break; }
[...]
> Т.е. работает-то оно правильно, но проверки существующих
> локейшенов почему-то всегда начинаюся с "/456/". Не понимаю, чем
> он такой особенный? Если отталкиваться от длины, так самый
> длинный "/7890/"
Префиксные location'ы не проверяются последовательно, а строится
дерево, и поиск максимально совпадающего location'а делается
проходом по дереву. В вашем случае location /456/ оказался в
корне дерева, и поэтому проверяется первым.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru