yii + nginx + fastcgi + ssi

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
Ответить
Aklaim
Сообщения: 4
Зарегистрирован: 2012.10.26, 14:37

yii + nginx + fastcgi + ssi

Сообщение Aklaim »

Решили добавить кэширование с помощью fastcgi, при этом куски страницы с динамическим контентом должны подгружаться с помощью ssi вставок.

SSI вставки нормально работают с обычными php скриптами (не связанными с yii), но когда хотим обратится к контроллеру и хотим включить результат его работы в код страницы, то под запросы от nginx уходят в бесконечный цикл.

Допустим делаем ssi вставку <!--#include virtual="/router/route"-->, на странице site/index.
Заходим на страницу site/index, php код выполняется и все вроде как хорошо, но когда дело доходит то включения куска страницы с помощью ssi, вместо обращения к /router/route, снова идет обращение к site/index и весь полученный html включается на место ssi вставки. В полученном html опять есть ssi кусок, когда nginx находит его снова пытается обратится к router/route, но опять обращается к site/index.
В общем все зацикливается и страница начинает включать сама себя.
Но если вместо обращения к контроллеру yii использовать обычный php файл, то весь html который он с генерирует будет включен без зацикливания.

В общем кто с таким сталкивался и есть ли уже решения данной проблемы?
Может нужно подкрутить конфиги на nginx, но вопрос в том какие именно?
Aklaim
Сообщения: 4
Зарегистрирован: 2012.10.26, 14:37

Re: yii + nginx + fastcgi + ssi

Сообщение Aklaim »

Решение найдено. При чем решение банальнее некуда.
Может кому поможет.
Необходимо вместо обращения к контроллеру в ssi вставке <!--#include virtual="/router/route"--> обращаться напрямую к index.php c параметрами запроса.
То есть было:
<!--#include virtual="/router/route"-->
Стало:
<!--#include virtual="/index.php?r=/router/route"-->

Если обращаться напрямую к index.php, nginx выполнит скрипт не взирая на настройки urlManager, которые могут в сочетании с SSI приводить к такому:
Изображение
Аватара пользователя
lkg0dzre
Сообщения: 17
Зарегистрирован: 2011.01.13, 17:21
Откуда: Новосибирск
Контактная информация:

Re: yii + nginx + fastcgi + ssi

Сообщение lkg0dzre »

Проблема с SSI в том, что в $_SERVER['REQUEST_URI'] приходит адрес исходного скрипта, а не подставляемого. Решается грязным хаком в самом начале index.php

$_SERVER['REQUEST_URI'] = $_SERVER['DOCUMENT_URI'];
if ($_SERVER['REQUEST_URI']) {
$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
}
Ответить