Re: вопрос про кэш

Maxim Dounin mdounin на mdounin.ru
Чт Янв 12 20:17:17 UTC 2012


Hello!

On Fri, Jan 13, 2012 at 12:06:25AM +0400, Anton Kiryushkin wrote:

> Спасибо, наложил, пересобрал. Наблюдаю ситуацию, при которой у меня
> возвращается ответ из кэша. Сужу по куке, которая есть в кэш-файле и
> куке, которая появляется в браузере. Это ведь неверно или наоборот
> правильное поведение?

Если все бекенды недоступны, и в кеше есть (устаревший) ответ, то 
должен возвращаться ответ из кеша (при таких настройках 
proxy_cache_use_stale).  Т.е. это правильное поведение.

Maxim Dounin

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



Подробная информация о списке рассылки nginx-ru