Вопрос по логике нахождения файла для выполнения

Driantsov Alexander bender at cdev.ru
Mon Jul 16 10:26:49 MSD 2007


On Sun, 15 Jul 2007 00:11:09 +0400
Igor Sysoev <is at rambler-co.ru> wrote:

> On Thu, Jul 12, 2007 at 07:01:18PM +0400, Driantsov Alexander wrote:
> 
> > Интересует следующая функциональность и возможность ее реализации:
> > 
> > Логика апача:
> > запрашиваемая URL'а:
> > 
> > http://domain/file/param/
> > 
> > Например:
> > 
> > http://domain/c/abc-def-ghi/
> > 
> > Апач находит файл "c", смотрит в .htaccess, а там указано:
> > 
> > <Files c>
> > ForceType application/x-httpd-php
> > </Files>
> > 
> > Апач обрабатывает файл "c" как PHP.
> > 
> > Логика Nginx'а:
> > 
> > запрашиваемая URL'а:
> > 
> > http://domain/file/param/
> > 
> > Например:
> > 
> > http://domain/c/abc-def-ghi/
> > 
> > Nginx не находит директории и выдает ошибку:
> > 
> > 2007/07/12 09:49:58 [error] 15109#0: *1 "/var/www/nginx/domain.com/c/abc-def-ghi/index.php" is not found (20: Not a directory)
> > 
> > Как заставить это дело обрабатываться скриптом "c" а не читать директорию?
> 
> Общего решения нет, для контретно этого случая можно использовать такое:
> 
>         location /c {
> 
>             set  $path_info  "";
>             if ($uri ~ ^/c(.+)) {
>                 set  $path_info  $1;
>             }
> 
>             fastcgi_pass   ...
>    
>             fastcgi_param  SCRIPT_FILENAME  /path/to/c;
>             fastcgi_param  PATH_INFO        $path_info;
>         }
> 

Спасибо за помощь. В конце-концов рабочим для меня оказался следующий конфиг:

location /c {
        fastcgi_pass 127.0.0.1:8888;
        fastcgi_param SCRIPT_FILENAME /var/www/nginx/domain/c;
        fastcgi_param PATH_INFO $uri;
        include conf/php.conf;
 }

-- 
Sincerely yours,
Driantsov Alexander,
Technical Support Engineer
 
Qualiteam Software
Glavpochtamt, p/o box 5152.   [web site] http://www.x-cart.com/
432072 Ulyanovsk, Russia      [ phone  ] +7-(8422)-429037  (9:00-18:00 GMT +4)





More information about the nginx-ru mailing list