Welcome! Log In Create A New Profile

Advanced

Как обычно, хочется странного...

Влад Максимов
December 16, 2010 03:50AM
Допустим, есть фронтенд (nginx) и есть некий бэкенд
В конфиге фронтенда что-нить в духе

location /news/ {
set $backend_content_url /backend/some/uri$uri;
rewrite ^(.*)$ /frontend/layouts/news.shtml;
}
....
location /frontend/ {
internal;
ssi on;
root /some_dir/frontend;
}
....
location /backend/ {
internal;
fastcgi_pass ......
...
вобщем, на бэкенд за контентом
}

layout_one.shtml представляет из себя что-нить в духе
<html>
<head>
..
</head>
<body>
<div class="header">
...
</div>
<div class="content">
<!--# if expr="$backend_content_url" --><!--# include virtual="$backend_content_url" --><!--# end if -->
</div>
<div class="header">
...
</div>
</body>
</html>

То есть, допустим, на фронтенде лежат лэйауты страниц, собирающие данные из разных кусочков (что-то из кеша, что-то непосредственно из бэкенда и т.п.).
И при этом возникает следующая проблема -- как реализовать "нормальную реакцию" на ошибки?
Что имеется в виду:
1. пользователь обращается по какому-то урлу (ну, скажем, посмотреть некую новость с id=125)
2. фронтенд по урлу определяет, какой именно лэйаут следует использовать для формирования страницы просмотра новости, загружает этот лэйаут (shtml) и исполняет его ssi-команды, которые "собирают" страницу из кусочков через include virtual/include file
3. пользователь видит готовую страницу
3а. НО: если новости с заданным id не существует, то хотелось бы отдать пользователю 404 или редиректнуть его куда-нибудь сообразно логике приложения

Однако, как это сделать, если о том, что "новости с таким id не существует!" знает бэкенд , и происходит это уже где-то в середине формирования страницы (то есть на этапе include virtual)?
Таким образом, имеем вопрос: можно ли каким-то образом буферизировать сборку страницы с целью проверить, не вернула ли в процессе сборки какая-то значимая её часть интересный нам код ошибки, чтобы на основании этих данных принять окончательное решение -- отдать собранный контент пользователю или же прервать "сборку страницы" и куда-нить его (пользователя) редиректнуть?


_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Как обычно, хочется странного...

Влад Максимов December 16, 2010 03:50AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 106
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready