я наблюдаю эту ситуацию при живых бэкендах.<br><br>пятница, 13 января 2012 г. пользователь Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>> писал:<br>> Hello!<br>><br>> On Fri, Jan 13, 2012 at 12:06:25AM +0400, Anton Kiryushkin wrote:<br>
><br>>> Спасибо, наложил, пересобрал. Наблюдаю ситуацию, при которой у меня<br>>> возвращается ответ из кэша. Сужу по куке, которая есть в кэш-файле и<br>>> куке, которая появляется в браузере. Это ведь неверно или наоборот<br>
>> правильное поведение?<br>><br>> Если все бекенды недоступны, и в кеше есть (устаревший) ответ, то<br>> должен возвращаться ответ из кеша (при таких настройках<br>> proxy_cache_use_stale).  Т.е. это правильное поведение.<br>
><br>> Maxim Dounin<br>><br>>><br>>> 12 января 2012 г. 22:18 пользователь Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>> написал:<br>>> > Hello!<br>>> ><br>
>> > On Thu, Jan 12, 2012 at 11:55:27AM +0400, Anton Kiryushkin wrote:<br>>> ><br>>> >> И еще возник вопрос про<br>>> >> proxy_cache_use_stale error timeout invalid_header updating http_500<br>
>> >> http_502 http_503 http_504 http_404;<br>>> >><br>>> >> Я правильно понимаю, что эта строчка означает примерно следующее:<br>>> >> если код ответа бэкенда 500, 503, 502, 404, превысил таймаут, вернул<br>
>> >> некорректные заголовки и находится в процессе обновления - вернуть<br>>> >> ответ из кэша, иначе возвращать ответ от бэкенда?<br>>> ><br>>> > Да.<br>>> ><br>>> > Наблюдаемое поведение - это ошибка, неправильно обрабатывался<br>
>> > случай, когда все бекенды были признаны мёртвыми, и nginx просто<br>>> > не пытался никуда ходить (в error_log'е при этом возникает<br>>> > сообщение "no live upstreams", и все бекенды объявляются снова<br>
>> > живыми).<br>>> ><br>>> > Патч прилагается.<br>>> ><br>>> > Maxim Dounin<br>>> ><br>>> >><br>>> >> 12 января 2012 г. 0:28 пользователь Anton Kiryushkin<br>
>> >> <<a href="mailto:swood@fotofor.biz">swood@fotofor.biz</a>> написал:<br>>> >> > вдогонку, bcj = name_upstream.<br>>> >> ><br>>> >> > 12 января 2012 г. 0:27 пользователь Anton Kiryushkin<br>
>> >> > <<a href="mailto:swood@fotofor.biz">swood@fotofor.biz</a>> написал:<br>>> >> >> Пишется следующее:<br>>> >> >> """name_upstream""502""EXPIRED"<br>
>> >> >> или """server1, server2""502, 502""-"<br>>> >> >> или """bcj""502""MISS"<br>>> >> >><br>
>> >> >> При этом время жизни кэша задано в 5 минут:<br>>> >> >>        location = / {<br>>> >> >>            proxy_ignore_headers Cache-Control Expires Set-Cookie;<br>
>> >> >>            proxy_cache_bypass  $http_x_update;<br>>> >> >><br>>> >> >>            proxy_cache cache_page;<br>>> >> >>            proxy_cache_key $scheme$host$request_uri;<br>
>> >> >>            proxy_cache_valid 5m;<br>>> >> >>            proxy_hide_header "Set-Cookie";<br>>> >> >><br>>> >> >>            proxy_cache_use_stale error invalid_header timeout<br>
>> >> >> updating http_500 http_502 http_503 http_504 http_404;<br>>> >> >><br>>> >> >>            proxy_pass  <a href="http://backend">http://backend</a>;<br>>> >> >>            proxy_set_header X-Real-IP $remote_addr;<br>
>> >> >>            proxy_set_header Host $http_host;<br>>> >> >>            proxy_redirect default;<br>>> >> >>            proxy_buffering on;<br>>> >> >><br>
>> >> >>        }<br>>> >> >><br>>> >> >> 9 января 2012 г. 5:10 пользователь Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>> написал:<br>
>> >> >>> Hello!<br>>> >> >>><br>>> >> >>> On Sun, Jan 08, 2012 at 09:24:58PM +0400, Anton Kiryushkin wrote:<br>>> >> >>><br>>> >> >>>> Честно сказать дебаг я еще не делал. В обычном access стандартный ответ 502.<br>
>> >> >>><br>>> >> >>> Для начала - что в error_log'е, и что в переменных $upstream_addr,<br>>> >> >>> $upstream_status, $upstream_cache_status (писать в access_log).<br>
>> >> >>><br>>> >> >>> Maxim Dounin<br>>> >> >>><br>>> >> >>>><br>>> >> >>>> 8 января 2012 г. 16:52 пользователь Maxim Dounin <<br>
<br>-- <br><div>Best regards,</div>Anton Kiryushkin,<br> <br>