Доброй ночи.<br><br>Спасибо за пояснение, исправил error_page в тестовом примере.<br>error_page 404 = @ssi_err;<br><br>Результат не изменился, stub все равно срабатывает.<br><br>С уважением, Максим Анфилатов.<br><div class="gmail_extra">
<br><br><div class="gmail_quote">11 декабря 2012 г., 0:55 пользователь Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello!<br>
<div class="im"><br>
On Mon, Dec 10, 2012 at 09:52:05PM +0400, Maksim Anfilatov wrote:<br>
<br>
> Добрый вечер.<br>
><br>
> Пример из нашей жизни<br>
><br>
> location /ssi_inc/ {<br>
>            memcache_pass ....<br>
>            [получаем из memcache]<br>
>            error_page 404 @ssi_backend;<br>
>            # если нет в memcache пробуем получить с бекенда<br>
> }<br>
><br>
> location @ssi_backend {<br>
>           proxy_pass ....<br>
>           [обращаемся на backend]<br>
> }<br>
><br>
> В данном случае логичным казалось бы поведение - вставлять stub, если<br>
> произошла ошибка, не указанная в error_page для ssi_inc, либо любая ошибка<br>
> при обращении на backend.<br>
<br>
</div>А оно вам надо - чтобы nginx догадывался, что вы хотите считать<br>
ошибкой (и соответственно использовать stub), а что - нет?<br>
<br>
Укажите явно, что в случае 404 следует обращаться на бекенд, и<br>
ответ трактовать не как тело 404 ошибки, и как полноценный ответ.<br>
И будет счастье.  Для этого всего лишь надо добавить "=" в<br>
директиву error_page, т.е. вместо<br>
<br>
    error_page 404 @ssi_backend;<br>
<br>
написать<br>
<br>
    error_page 404 = @ssi_backend;<br>
<br>
Подробности можно прочитать тут: <a href="http://nginx.org/r/error_page/ru" target="_blank">http://nginx.org/r/error_page/ru</a>.<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
> С уважением, Максим Анфилатов.<br>
><br>
><br>
> 10 декабря 2012 г., 18:46 пользователь Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>>написал:<br>
><br>
> > Hello!<br>
> ><br>
> > On Mon, Dec 10, 2012 at 03:16:42PM +0400, Maksim Anfilatov wrote:<br>
> ><br>
> > > Добрый день.<br>
> > ><br>
> > > Наткнулся на неочевидное поведение при совмещении include virtual stub с<br>
> > > error_page в location, обрабатывающем данный include. Простой тестовый<br>
> > > пример.<br>
> > ><br>
> > >         location /ssi_test/ {<br>
> > >                 root /home/woyager/;<br>
> > >                 ssi on;<br>
> > >         }<br>
> > >         location /ssi_inc/ {<br>
> > >                 root /home/woyager/;<br>
> > >                 error_page 404 @ssi_err;<br>
> > >         }<br>
> > >         location @ssi_err {<br>
> > >                 return 200 "error from ssi_err";<br>
> > >         }<br>
> > ><br>
> > > В ssi_test/index.html<br>
> > ><br>
> > > include without stub "<!--# include virtual="/ssi_inc/test.inc" -->" <br><br>
> > > include with stub <!--# block name="one" -->stub error<!--# endblock --><br>
> > > "<!--# include virtual="/ssi_inc/test.inc" stub="one" -->" <br><br>
> > ><br>
> > > На выходе имеем<br>
> > ><br>
> > > include without stub "error from ssi_err"<br>
> > > include with stub "stub error"<br>
> > ><br>
> > > Вроде в обоих случаях должен бы приходить error from ssi_err.<br>
> ><br>
> > Почему?  В обоих случаях при обработке включаемого файла<br>
> > происходит ошибка.  В одной случае она включается как есть, в<br>
> > другом - задан параметр stub, который её перекрывает.<br>
> ><br>
> > --<br>
> > Maxim Dounin<br>
> > <a href="http://nginx.com/support.html" target="_blank">http://nginx.com/support.html</a><br>
> ><br>
> > _______________________________________________<br>
> > nginx-ru mailing list<br>
> > <a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
> > <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
<br>
> _______________________________________________<br>
> nginx-ru mailing list<br>
> <a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
> <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
<br>
<br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.com/support.html" target="_blank">http://nginx.com/support.html</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></div></blockquote></div><br></div>