http {
включить mime.types;
default_type application/octet-stream;
сервер {
корень/сайты;
слушать 80;
имя_сервера локальный хост;
# не работает
try_files /logo.png /logo.jpg /error;
# работает
переписать ^/е /ошибка;
# работает
# return 200 "$request_uri обрабатывается блоком сервера";
место расположения / {
default_type текстовый/обычный;
return 200 "Корневой префикс совпал";
}
местоположение/ошибка {
default_type текстовый/обычный;
вернуть 404 "Лого не найдено";
}
}
Я хочу знать, в чем причина такой оценки, я не смог найти надежного объяснения ни в документации, ни на форумах.
Кстати, я экспериментировал со следующим сценарием:
- Удалил блок location/{} и все заработало как задумано. я знаю это
когда запрос делается на сервер, он сначала оценивается сервером
блок, а затем соответствующие блоки местоположения. Но кажется
try_files
директива игнорируется (ПОЧЕМУ?!!). Если я прав, последний аргумент
try_files
директива переписывает URI, поэтому он должен вести себя как перезапись
директива. Директивы rewrite и return работали как положено,
они оценивались каждый раз независимо от того, есть ли местонахождение
блокировать совпадения или нет.
Я много исследовал, чтобы найти достоверную информацию, объясняющую эту ситуацию, но не смог найти. Поэтому я прошу здесь ответа или источника о внутренностях Nginx у кого-то, кто знает.