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

TJ at dir.bg TJ at dir.bg
Mon Nov 2 15:02:50 MSK 2009


Приветствую!


Кусок конфига (ссылка на доки 
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.

В чем траблы?

С уважением,
TJ






More information about the nginx-ru mailing list