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
|