ПРОЕКТЫ 


  АРХИВ 


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: вопрос про кэш



Hello!

On Fri, Jan 13, 2012 at 05:16:36PM +0400, Anton Kiryushkin wrote:

> Понял ответ. Тогда вопрос. Как можно при живых бэкендах брать ответ от
> бэкендов, а при мертвых - из кэша. При этом переодически этот кэш все
> же обновлять.
> Или запрещать кэширование для всех ответов, переодически прогоняя сайт
> с загаловками разрешающими кэширование?

Как-то так, да.  Хотя я бы наверное обрабатывал ошибки через 
error_page, и в случае ошибок возвращал конкретный периодически 
обновляемый файл.

Maxim Dounin

> 
> 13 января 2012 г. 17:04 пользователь Maxim Dounin <mdounin@xxxxxxxxxx> 
> написал:
> > Hello!
> >
> > On Fri, Jan 13, 2012 at 08:34:45AM +0400, Anton Kiryushkin wrote:
> >
> >> я наблюдаю эту ситуацию при живых бэкендах.
> >
> > При живых бекендах ответ должен отдаваться из кеша, если он там
> > свежий.
> >
> > Включите логгирование $upstream_cache_status, происходящее станет
> > понятнее.
> >
> > Maxim Dounin
> >
> >>
> >> пятница, 13 января 2012 г. пользователь Maxim Dounin <mdounin@xxxxxxxxxx>
> >> писал:
> >> > 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@xxxxxxxxxx>
> >> написал:
> >> >> > 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@xxxxxxxxxxx> написал:
> >> >> >> > вдогонку, bcj = name_upstream.
> >> >> >> >
> >> >> >> > 12 января 2012 г. 0:27 пользователь Anton Kiryushkin
> >> >> >> > <swood@xxxxxxxxxxx> написал:
> >> >> >> >> Пишется следующее:
> >> >> >> >> """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@xxxxxxxxxx>
> >> написал:
> >> >> >> >>> 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 <
> >>
> >> --
> >> Best regards,
> >> Anton Kiryushkin,
> >
> >> _______________________________________________
> >> 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
> 
> 
> 
> -- 
> Best regards,
> Anton Kiryushkin,
> _______________________________________________
> 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.