if (!-f $request_filename)

Igor Sysoev is at rambler-co.ru
Wed Jun 21 13:35:17 MSD 2006


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





More information about the nginx-ru mailing list