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