Re: try_files не редиректит сразу на последний аргумент?

cronfy cronfy на gmail.com
Вт Окт 19 23:06:14 MSD 2010


>> Не получается осознать алгоритм работы try_files. Такое впечатление,
>> что после того, как он *не нашел* указанные файлы, он продолжает
>> обрабатывать директивы из текущего location, а не делает внутренний
>> редирект. Имеем такой конфиг:
>>
>>         location / {
>>             try_files $uri @backend;
>> #            return 403;
>>         }
>>
>>         location @backend {
>>           proxy_set_header   Host             $host;
>>           proxy_pass         http://127.0.0.1:8091$request_uri;
>>         }
>>
>> Если return закомментирован, то все работает как описано в
>> документации. Но если его раскомментировать, то и на существующие, и
>> на несуществующие файлы отдается Forbidden.
>>
>> nginx version: nginx/0.8.50
>>
>> Что я не так понял?
>
> Директива "return" работает в фазе rewrite, это раньше чем фаза
> try_files.  Поэтому если написано "return 403" - до try_files дело
> просто не дойдёт.

Понятно, спасибо. Вопрос вот с чем связан - в перловом обработчике
есть проверка существования файла. Если файл не в кэше, проверка
занимает некоторое время, а воркер в это время блокируется на перле. Я
хотел с помощью try_files "прогреть" кэш ОС, в надежде, что воркер
целиком блокироваться не будет. А как на самом деле - будет также
блокироваться на ФС или обработка параллельных запросов во время
try_files будет идти?



-- 
// cronfy


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