Re: nginx-1.7.9 + ngx_cache_purge 2.3 теперь работает только при совпадении заголовка Accept :(

Maxim Dounin mdounin at mdounin.ru
Thu Jan 15 14:24:56 UTC 2015


Hello!

On Thu, Jan 15, 2015 at 03:54:23PM +0200, Олег Черній wrote:

> Сегодня удивил эксперимент, при котором запрашивался блок, ложился в кэш и
> без проблем этот кэш можно было почистить из браузера.
> 
> Но при попытке запросить это же адрес на очистку из curl или wget получал
> 404 и кеш не чистился.
> 
> Как оказалось это реакция на несовпадение заголовка "Accept" при запросе
> контента, который помещается в кэш и запроса который этот контент должен
> удалить. Если заголовки совпадают -- все Ok, если нет - 404 и кэш не
> чиститься.

[...]

> В бинарной части вначале файлика с кэшем видно, что добавился "запакованый"
> заголовок "Accept", видимо проблема связана с этим.
> 
> Не придумал ничего лучшего чем откатиться до nginx 1.7.6 + ngx_cache_purge
> 2.1 -- там этой проблемы нет. Может в кэше можно этот "Accept" как-то
> отрубить?

Начиная с 1.7.7 nginx умеет обрабатывать заголовок Vary в ответах 
бекенда, кешируя несколько вариантов ответа:

    *) Изменение: теперь nginx учитывает при кэшировании строку "Vary" в
       заголовке ответа бэкенда.

Если нужно, старое поведение можно вернуть с помощью директивы 
proxy_ignore_headers (http://nginx.org/r/proxy_ignore_headers/ru):

    proxy_ignore_headers Vary;

Совсем правильное решение - убрать из ответов Vary бекенда, если 
он вам на самом деле не нужен.

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



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