Re: Не создаются директории для кэша и nginx не кэширует файлы

Maxim Dounin mdounin at mdounin.ru
Thu Jan 15 13:33:46 UTC 2015


Hello!

On Thu, Jan 15, 2015 at 01:19:31PM +0300, Maksim Kulik wrote:

> Здравствуйте!
> Пробую настраивать кэширование контента, поступающего с бэкенда. Директория
> для кэша появляется (в моем случае /var/tmp/nginx-cache), но не заполняется.
> В конфигурации есть следующее:

[...]

> *        proxy_cache secondary;*
> *        proxy_cache_valid any 1h;*
> *        proxy_ignore_headers "Expires" "Cache-Control" "Set-Cookie";*
> *        proxy_cache_key "$host$request_uri";*

[...]

> Записи из дебаг-лога касательно кэша следующие:
> 
> 2015/01/15 12:59:21 [debug] 40892#0: *14266 http cache key: "
> example.com/category/networks/"
> 2015/01/15 12:59:21 [debug] 40892#0: *14266 http file cache exists: -5 e:0
> 2015/01/15 12:59:21 [debug] 40892#0: *14266 cache file:
> "/var/tmp/nginx-cache/c/f/b1a01f3fd8c3e9c8908accfa9d8785fc"
> 2015/01/15 12:59:21 [debug] 40892#0: *14266 http upstream cache: -5
> 2015/01/15 12:59:21 [debug] 40892#0: *14266 http file cache free, fd: -1

Судя по тому, что зовётся ngx_http_file_cache_free(), по каким-то 
причинам до сохранения в кеш дело не доходит.  Это может быть, 
например, из-за того, что ответ получен не полностью, или 
сохранение в кеш запрещено заголовками ответа (помимо 
перечисленных в proxy_ignore_headers, есть ещё как минимум 
X-Accel-Expires и "Vary: *"), или обработка запроса 
перенаправлена в другое место (X-Accel-Redirect).

[...]

> Что может быть не так? Какие данные еще могут быть полезными для
> диагностики?

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

-- 
Maxim Dounin
http://nginx.org/



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