Re: непонятка с IP адресами

Sergey Shepelev temotor на gmail.com
Вт Июн 14 14:51:57 MSD 2011


>> Инструменты для проверки
>> регекспов:
>> http://gskinner.com/RegExr/
>> http://myregexp.com/
>> pcretest
>> perl -pe
>
> Спасибо. Вроде понял.
> Подскажите еще я правильно понимаю что
> если есть локейшен типа:
>  location ^~ /images/ {
>      ....
>  }
>
> то в него попадут все, что есть в
> каталоге images/*.*. А если у этого images усть
> подкоталоги, к примеру images/img1/*.*. Эти
> картинки из img1 попадут в этот локейшен
> или нет?
>

Локейшны работают с урлами, а не с файлами и каталогами. Урл это
строка. Никакие символы в строке не имеют специального значения. В
путях файлов слеши (/) разделяют "подкаталоги". А в строке - слеш
ничего не значит, это такой же символ как m, g или 1.

Из документации:
"Если нужно запретить проверку регулярных выражений после проверки
обычных строк, то это можно сделать с помощью префикса "^~". Если у
максимально совпавшего location'а есть этот префикс, то регулярные
выражения не проверяются."

Таким образом, среди всех не-регексповых локейшнов ищется максимальное
совпадение с урлом. Для конфига
location / { ... }
location ~^ /images/ { ... }
урлы /images/foo.bar, /images/foo/bar/,
/images/foo/foo/foo/foo/foo/foo/foo/foo/foo совпадают с обоими
локейшнами. Но с первым локейшном совпадает только 1 символ из начала
урла (/), а со вторым локейшном совпадает 8 символов из начала
(/images/), поэтому запросы будут обработаны в нём. Что в урле идёт
после максимального совпадения - совершенно не важно.

P.S.: маска *.* имеет смысл только в MSDOS (который умер). В остальных
популярных операционных системах, включая Windows 4+, расширений
отдельно от имён файлов больше нет.


Подробная информация о списке рассылки nginx-ru