ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[3]: if (!-f $request_filename)



On Wed, 21 Jun 2006, Aleksej Novikov wrote:

Извиняюсь, всё же ступил. Оказалост дело в том, что в конце описан ещё
один location для выдачи статики

location ~*^.+.(htm|html|gz)$ {
           root   /data/www/htdocs/cache;
                expires      600s;
       }

Получается, что по запросу test.htm выполнялся именно он. А проверка
на файл не отрабатывала. Тогда вопрос по прежнему актуален. Как
заставить отработать проверку на файл прежде чем вышеописанный
location.

Можно "if (!-f $request_filename)" поставить на уровне сервера.

On Wed, 21 Jun 2006, Aleksej Novikov wrote:

Спасибо, Игорь, но всё без именений.
nginx version: nginx/0.3.49
По прежнему 404 ошибка и никаких обращений к backend.

Тогда нужен отладчоный лог.

On Wed, 21 Jun 2006, Aleksej Novikov wrote:

 Может я туплю, однако никак не выходит.

 Задача проверить существование файла, и если его нет, то сделать
 запрос на backend.

 Вот такой вот конфиг у меня.

server {
       listen       80;
       server_name  cache;
       access_log  /var/log/nginx/cache.access.log;
location / {
       root  /data/www/htdocs/cache;
       autoindex on;
               if (!-f $request_filename) {
               rewrite (.*)        /index.php?rfname=$request_filename  last;
               }
       proxy_pass         http://127.0.0.1:8888/;
       proxy_redirect     off;
       proxy_set_header   Host             $host;
       proxy_set_header   X-Real-IP        $remote_addr;
       proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
       }
}

Обращаюст к файлу test.htm (понятное дело он не существует)
на экране вижу - 404 by nginx.
А в логе только одна строка.

10.10.10.2 - - [21/Jun/2006:12:12:47 +0300] "GET /test.htm HTTP/1.1" 404 169 "-" 
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"

Подскажите плиз, что не так ?

У меня подобный конфиг выдаёт 500. Нужно примерно так:

     location / {
         root  /data/www/htdocs/cache;
         if (!-f $request_filename) {
             rewrite (.*)
/index.php?rfname=$request_filename  last;
         }
     }

     location = /index.php {
         proxy_pass         http://127.0.0.1:8888/;
         ...
     }


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




--
Best regards,
Aleksej
ICQ: 113882950
GSM:371.936.86.24







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




--
Best regards,
Aleksej
ICQ: 113882950
GSM:371.936.86.24







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



 




Copyright © Lexa Software, 1996-2009.