Re: Поведение try_files в зависимости от access_log

Maxim Dounin mdounin at mdounin.ru
Wed Jun 3 14:27:32 UTC 2015


Hello!

On Wed, Jun 03, 2015 at 04:57:24PM +0300, Daniil wrote:

> Здравствуйте,
> 
> Есть следующий конфиг:
> 
> # например GET /apple/iphone/info
> location ~ .+/info$ {
>    index index.php;
>    try_files $uri $uri/ @php;
>    access_log bad_guys.log if=$is_bad_guy;
> }
> 
> location @php {...}
> 
> 
> Переменная $is_bad_guy вычисляется через цепочку map и может принимать
> значение 0 или 1.
> 
> Если $is_bad_guy = 0, то локация срабатывает как надо и try_files переходит
> на @php если не найдены файлы в root каталоги.
> 
> Но, если $is_bad_guy = 1 (срабатывает access_log), то сервер возвращает
> 404, в логе ошибок появляется сообщение "File not found" и обработка не
> доходит до @php.
> 
> В чем здесь может быть ошибка?

Ошибка где-то ещё, смотрите внимательно на конфиг целиком.

Например, к похожему эффекту может привести использование 
директивы if модуля rewrite в данном location'е, см.  
http://wiki.nginx.org/IfIsEvil.

-- 
Maxim Dounin
http://nginx.org/



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