ssi subrequest variables

Igor Sysoev is at rambler-co.ru
Sat Apr 29 23:21:18 MSD 2006


On Fri, 28 Apr 2006, proforg wrote:

> да, это работает пока location "простой"
> но если location где делается set var отдается по fcgi или proxy_pass
> то значения переменных в основном запросе оказываются неопределены :(

Да, есть такая проблема. Дело в том, что в случае позапросом к fastcgi
или proxy_pass nginx инициирует соединение и продолжает выполнять SSI,
то есть, все подзапросы к внешним серверам работают параллельно.

Нужно будет сделать параметр wait:
<!--# include virtual="/mmc_var" wait="yes"-->

On 4/4/06, Igor Sysoev <is at rambler-co.ru> wrote:
>
> On Tue, 4 Apr 2006, proforg wrote:
>
> > On 4/4/06, Igor Sysoev <is at rambler-co.ru> wrote:
> >
> > On Tue, 4 Apr 2006, proforg wrote:
> >
> > > Снова про наследование ssi переменных из подзапросов :)
> > > Ты помнится говорил что это не очень сложно сделать, может быть
> > получится
> > > включить это в следующщую версию nginx ?
> >
> > Какое именно наследование имеется ввиду ?
> > Наследование в основной ssi из подзапроса ? Это должно работать.
>
> > да,  именно о нём.  вот  кусок из переписки где это обсуждалось (17
> > февраля):
>
> Видимо, мы тогда не поняли друг друга. Вот такие два файла:
>
> <!--# include virtual="/ssi_inc2.html" -->value is <!--# echo var="NAME"
> -->
>
> /ssi_inc2.html:
> <!--# set var="NAME" value="TEXT" -->
>
> у меня выдают
> value is TEXT
>
>
> Игорь Сысоев
> http://sysoev.ru
>
> >> В SSI можно попробовать примерно так:
> >>
> >> <!--# include virtual="/mmc_var" -->value is "<!--# echo var="NAME"
> -->"
> >>
> >> /mmc_var возвращает что-то вроде
> >>
> >> <!--# set var="NAME" value="TEXT" -->
> >>
> >> Ответ в результате выглядит так:
> >>
> >> value is "TEXT"
> >
> > К сожалению, не получается.
> > Если на локейшн /mmc_var поставить ssi on - то тогда <!--# set
> > var="NAME" value="TEXT" --> выполняется, но на уровень скрипта который
> > вызвал /mmc_var значение var не передается, т.к установлено внутри
> > подзапроса.
> > если же убрать ssi on, то <!--# set var="NAME" value="TEXT" --> просто
> > выводится в основном скрипте - ssi фильтр делает один проход по тексту
> > и обработать это уже не может ...
> >
> > Игорь, а можно как нить простым способом заставить ssi применяться
> дважды
> ?
> > Для таких случаев. Это я думаю всё равно будет быстрее чем куча
> подзапросов ...
>
> Сейчас - нет. Переменные создаваемые внутри SSI дальше текущего подзапроса
> не хранятся. Надо будет исправить.


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





More information about the nginx-ru mailing list