Проблема с 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