Проблема с if (-x $request_filename)

TJ at dir.bg TJ at dir.bg
Tue Nov 3 14:41:27 MSK 2009


Спасибо, Максим!
Это сработало.
Вы в курсе, ожидать ли официальный патч на эту багофичу?


Maxim Dounin пишет:
> Hello!
>
> On Mon, Nov 02, 2009 at 03:02:50PM +0300, TJ at dir.bg wrote:
>
>   
>> Приветствую!
>>
>>
>> Кусок конфига (ссылка на доки
>> http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html):
>> ..
>>                location /chkimg/
>>                {
>>                        root /var/projects/www/test;
>>
>>                        log_format      imgtestlog
>>                            '"$request" $status $body_bytes_sent '
>>                            '"$http_referer" "$chk_img"
>> "$request_filename"';
>>
>>                        access_log      /var/log/nginx/imgtest.log
>> imgtestlog;
>>
>>                        if (-x $request_filename)
>>                        {
>>                                set $chk_img 1;
>>                        }
>>
>>                        if ($chk_img)
>>                        {
>>                                return 403;
>>                        }
>>                }
>> ..
>>
>> При запросе файла (картинки jpeg) с установленным аттрибутом
>> исполнения (chmod +x) - эффект нулевой, т.е. отдается содержимое
>> файла. В логе - правильный request_filename и пустая $chk_img.
>> Соответственно ожидаемо отдается файл без такого аттрибута.
>>
>> Подобная ситуация, когда -x заменяю на !-x и запрашиваю файл с
>> аттрибутом +x и файл без такового - в обоих случаях ошибка 403.
>>
>> Ради чистоты эксперимента заменил -x на -e - сразу же получаю 403
>> ошибку и в логе $chk_img равна 1.
>>
>> Проблема пришла из дебиана и nginx/0.6.32. Решил проверить на
>> рабочей тачке с гентой и nginx посвежее nginx/0.7.59, gentoo linux.
>>
>> В чем траблы?
>>     
>
> Сюрприз: в данном случае виноват не if() сам по себе. :)
>
> Патч.
>
> Maxim Dounin
>   





More information about the nginx-ru mailing list