ПРОЕКТЫ 


  АРХИВ 


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: Проблема с SSI-под запросами



On Mon, Jun 15, 2009 at 03:36:44PM +0400, Матвеев Андрей wrote:

> Приветствую,
> 
> 
> Статика в данном примере отдается нормально из /opt/www/somesite-1/data, 
> а когда запрашиваем /test.html содержащий <!--#include virtual="top.html" --> 
> подзапрос к top.html имеет неверный root, переменные $a и $b не передались.
> 
> Если переменные задать явно, подзапрос отрабатывает:
> set $a  somesite-;
> set $b  1;
> 
> Так и должно быть? Или что-то неверно в конфиге?
> 
> nginx version: nginx/0.7.59
> 
> ошибка подзапроса из error_log:
> 2009/06/15 15:05:50 [error] 4378#0: *1 open() "/opt/www-data//data/top.html" 
> failed (2: No such file or directory), client: xx.xx.xx.xx, server: 
> ~^(somesite-)([1-9])\.some\.ru$, request: "GET /test.html HTTP/1.1", 
> subrequest: "/top.html", host: "somesite-1.some.ru"
> 
> 
>     server {
>         listen          80 default backlog=1024 deferred;
>         server_name     ~^(somesite-)([1-9])\.some\.ru$;
> 
>         set $a  $1;
>         set $b  $2;
> 
>         location ~ (test.html|top.html) {
>                ssi on;
>                root /opt/www-data/$a$b/data;
>         }
> 
>         location / {
>                 root /opt/www-data/$a$b/data;
>         }
>     }

Проблема в том, что подзапрос начинает работу с rewrite/set серверного уровня
и $1/$2 теряются.

Вот так работать будет, но конструкция хрупкая - любой rewrite или
location с регексом всё сломает:

     server {
         listen          80 default backlog=1024 deferred;
         server_name     ~^(somesite-)([1-9])\.some\.ru$;
 
         location = /test.html {
                ssi on;
                root /opt/www-data/$1$2/data;
         }

         location = /top.html {
                ssi on;
                root /opt/www-data/$1$2/data;
         }
 
         location / {
                root /opt/www-data/$1$2/data;
         }
     }


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



 




Copyright © Lexa Software, 1996-2009.