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