ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: error_page & stub не работают вместе



Доброй ночи.

Спасибо за пояснение, исправил error_page в тестовом примере.
error_page 404 = @ssi_err;

Результат не изменился, stub все равно срабатывает.

С уважением, Максим Анфилатов.


11 декабря 2012 г., 0:55 пользователь Maxim Dounin <mdounin@xxxxxxxxxx> написал:
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@xxxxxxxxxx>написал:
>
> > 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@xxxxxxxxx
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru

> _______________________________________________
> nginx-ru mailing list
> nginx-ru@xxxxxxxxx
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


--
Maxim Dounin
http://nginx.com/support.html

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.