nginx-0.8.1

Volkov Oleg nginx at teratelecom.ru
Fri Jun 12 22:11:37 MSD 2009


В Птн, 12/06/2009 в 15:47 +0400, Igor Sysoev пишет:
> On Fri, Jun 12, 2009 at 02:52:19PM +0400, Volkov Oleg wrote:
> 
> > Еще заметил, если в кеше лежит нечто без expire (например страница 404)
> > а бекенд отдает страницу 200 но с истекшим expire то нгинкс первый раз
> > отдает страницу от бэкенда (200) и заклинивает - он не может обновить
> > кеш и следующие запросы отдаются из кеша (страница 404), в логах при
> > этом статус UPDATING
> > 
> > Пока такое лечится очисткой кэша.
> 
> В кэше expires есть всегда: если его нет в заголовках ответа, то
> proxy/fastcgi_cache_valid. Но сути ошибки я не понял, можно сделать
> отладочный лог ? 

Лог получить сложно, так как я почистил кеш, а 404 в него попало
случайно.
Если придумаю как воспроизвести проблему искусственно - пришлю.

Смысл в том, что кеш то истек, но бэкенд выдавал страницу с expire на
несколько лет назад. Поэтому nginx не заменял ею страницу в кеше (она
свежее считалась). Но nginx не подумал, что в кеше то 404, а ему
предлагают 200. И по непонятным причинам все дальнейшие запросы попадали
под 
proxy_cache_use_stale updating;
то есть "залипал" статус UPDATING. Хотя первая страничка, судя по логам,
отдавалась нормально (статус 200, EXPIRED).

Воспроизвожу все по памяти.
-- 
С уважением,
Волков Олег







More information about the nginx-ru mailing list