Re: вложенные include virtual в SSI

Maxim Dounin mdounin at mdounin.ru
Thu Jul 31 11:28:30 UTC 2014


Hello!

On Wed, Jul 30, 2014 at 04:35:04PM -0400, mistercx wrote:

> Приветствую всех!
> 
> Только что при переносе статического проекта с Apache на Nginx столкнулся с
> пренепреятнейшей особенностью - невозможностью использования вложенных
> include virtual в SSI.
> 
> Например:
> 
> файл lang.shtml
> ============
> <!--#set var="company" value="Компания" -->
> <!--#set var="video" value="Видео" -->
> <!--#set var="gb" value="Гостевая книга" -->
> 
> файл test.shtml
> ============
> <!--#include virtual="lang.shtml"-->
> <!--#echo var="company"-->
> 
> Результат: Nginx - вместо "Компания" в браузере видим None; Apache -
> отображается "Компания"
> 
> SHTML-страниц в проекте около 6000. Есть какое-либо мысли как сие
> разруливается, или смотреть назад в сторону Apache?

Надо так:

<!--#include virtual="lang.shtml" wait="yes" -->

Потому что по умолчанию nginx обрабатывает SSI-подзапросы 
параллельно, и приведённом случае переменная "company" 
устанавливается уже после того, как её попытались вывести.

Вообще следует иметь в виду, что SSI в Apache и в nginx'е - 
местами различаются.  При миграции подобных объемов кода - имеет 
смысл тщательно проверять работоспособность всех используемых 
конструкций.  То, что умеет делать nginx, подробно описано в 
документации[1], но нюансы вроде вышеназванного могут быть 
неочевидны.

http://nginx.org/ru/docs/http/ngx_http_ssi_module.html#commands

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru