Hi
Скрипт x.php, вывод которого содержит SSI-вставку <!--# include
virtual="/y.php" -->.
Оба скрипта кладут себя в Memcached.
При заходе на x.php ответ ищется в кэше, ессно не находится, идет
запрос на бакэнд
"GET /x.php HTTP/1.0" (правильно срабатывает /fallback), скрипт выдаёт
содержимое, попутно сохраняя себя в Memcached:
<5 new client connection
<5 get /x.php?
>5 END
<5 connection closed.
<5 new client connection
<5 version
>5 VERSION 1.1.12
<5 set /x.php? 0 9000 40
>5 STORED
<5 connection closed.
В содержимом присутствует SSI, и nginx опять ищет его в Memcached
<5 new client connection
<5 get /y.php
>5 END
<5 connection closed.
не находит и... спрашивает "GET /fallback HTTP/1.0" у бакэнда.
Хотя должен был по идее спросить "GET /y.php HTTP/1.0"
Лог nginx:
X.X.X.X - [20/Oct/2007:12:28:56 +0600] GET /x.php HTTP/1.1 "200" 195
Лог бакэнда:
127.0.0.1 - - [20/Oct/2007:12:28:56 +0600] "GET /x.php HTTP/1.0" 200 40
127.0.0.1 - - [20/Oct/2007:12:28:56 +0600] "GET /fallback HTTP/1.0" 302 193
В конфиге nginx присутствует такое:
location / {
proxy_redirect http://backend.ru:8080/ /;
if ($request_method = POST) {
proxy_pass http://localhost:8080;
break;
}
set $memcached_key "$uri";
memcached_pass 127.0.0.1:11211;
error_page 404 = /fallback;
default_type text/html;
ssi on;
}
location = /fallback {
proxy_pass http://localhost:8080;
proxy_redirect http://backend.ru:8080/ /;
ssi on;
}
--
engineer