Re: error_page & stub не работают вместе
Maksim Anfilatov
maksim at woyager.ru
Mon Dec 10 22:59:55 UTC 2012
Доброй ночи.
Спасибо за пояснение, исправил error_page в тестовом примере.
error_page 404 = @ssi_err;
Результат не изменился, stub все равно срабатывает.
С уважением, Максим Анфилатов.
11 декабря 2012 г., 0:55 пользователь Maxim Dounin <mdounin at mdounin.ru>написал:
> Hello!
>
> On Mon, Dec 10, 2012 at 09:52:05PM +0400, Maksim Anfilatov wrote:
>
> > Добрый вечер.
> >
> > Пример из нашей жизни
> >
> > location /ssi_inc/ {
> > memcache_pass ....
> > [получаем из memcache]
> > error_page 404 @ssi_backend;
> > # если нет в memcache пробуем получить с бекенда
> > }
> >
> > location @ssi_backend {
> > proxy_pass ....
> > [обращаемся на backend]
> > }
> >
> > В данном случае логичным казалось бы поведение - вставлять stub, если
> > произошла ошибка, не указанная в error_page для ssi_inc, либо любая
> ошибка
> > при обращении на backend.
>
> А оно вам надо - чтобы nginx догадывался, что вы хотите считать
> ошибкой (и соответственно использовать stub), а что - нет?
>
> Укажите явно, что в случае 404 следует обращаться на бекенд, и
> ответ трактовать не как тело 404 ошибки, и как полноценный ответ.
> И будет счастье. Для этого всего лишь надо добавить "=" в
> директиву error_page, т.е. вместо
>
> error_page 404 @ssi_backend;
>
> написать
>
> error_page 404 = @ssi_backend;
>
> Подробности можно прочитать тут: http://nginx.org/r/error_page/ru.
>
> >
> > С уважением, Максим Анфилатов.
> >
> >
> > 10 декабря 2012 г., 18:46 пользователь Maxim Dounin <mdounin at mdounin.ru
> >написал:
> >
> > > Hello!
> > >
> > > On Mon, Dec 10, 2012 at 03:16:42PM +0400, Maksim Anfilatov wrote:
> > >
> > > > Добрый день.
> > > >
> > > > Наткнулся на неочевидное поведение при совмещении include virtual
> stub с
> > > > error_page в location, обрабатывающем данный include. Простой
> тестовый
> > > > пример.
> > > >
> > > > location /ssi_test/ {
> > > > root /home/woyager/;
> > > > ssi on;
> > > > }
> > > > location /ssi_inc/ {
> > > > root /home/woyager/;
> > > > error_page 404 @ssi_err;
> > > > }
> > > > location @ssi_err {
> > > > return 200 "error from ssi_err";
> > > > }
> > > >
> > > > В ssi_test/index.html
> > > >
> > > > include without stub "<!--# include virtual="/ssi_inc/test.inc" -->"
> <br>
> > > > include with stub <!--# block name="one" -->stub error<!--# endblock
> -->
> > > > "<!--# include virtual="/ssi_inc/test.inc" stub="one" -->" <br>
> > > >
> > > > На выходе имеем
> > > >
> > > > include without stub "error from ssi_err"
> > > > include with stub "stub error"
> > > >
> > > > Вроде в обоих случаях должен бы приходить error from ssi_err.
> > >
> > > Почему? В обоих случаях при обработке включаемого файла
> > > происходит ошибка. В одной случае она включается как есть, в
> > > другом - задан параметр stub, который её перекрывает.
> > >
> > > --
> > > Maxim Dounin
> > > http://nginx.com/support.html
> > >
> > > _______________________________________________
> > > nginx-ru mailing list
> > > nginx-ru at nginx.org
> > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> > _______________________________________________
> > nginx-ru mailing list
> > nginx-ru at nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
> --
> Maxim Dounin
> http://nginx.com/support.html
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20121211/e8d6239b/attachment-0001.html>
Подробная информация о списке рассылки nginx-ru