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

Igor Sysoev is at rambler-co.ru
Tue Nov 3 15:08:35 MSK 2009


On Tue, Nov 03, 2009 at 02:41:27PM +0300, TJ at dir.bg wrote:

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

Да, будет в следующем релизе.

> 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
> >   

-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list