Re: Не работает map c переменными $status и $upstream status
Валентин Бартенев
vbart на nginx.com
Ср Авг 3 12:39:11 UTC 2016
On Wednesday 03 August 2016 04:32:45 YuriV wrote:
> Vadim A. Misbakh-Soloviov
>
> Понятно, т.е. средств заставить кэшировать ТОЛЬКО 200-е респонзы от апстрима
> у nginx'а попросту нет :(
> Крайне это печально - мы уже не раз нарывались на большие проблемы, когда
> наш кривой бэкенд отдает статику с неверным кодом типа 406 или 400, но с
> заголовком Cache-Control: public, max-age=100500 и именно этот респонз
> попадает в кеш и рушит весь фронт сайта.
>
[..]
Вы используете не ту директиву.
Директива proxy_cache_bypass отвечает за то, будет ли проверятся наличие
ответа в кэше для данного запроса, или запрос будет отправлен на бекенд
сразу. Разумеется в этот момент переменные, связанные с ответом бекенда,
пусты, ибо никакого запроса на бекенд еще не было. При этом данная
директива не предотвращает последующего кэширования ответа.
Документация:
http://nginx.org/r/proxy_cache_bypass/ru
Для управления кэшированием существует другая директива proxy_no_cache:
http://nginx.org/r/proxy_no_cache/ru
--
Валентин Бартенев
Подробная информация о списке рассылки nginx-ru