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