Re: Не работает map c переменными $status и $upstream status

Maxim Dounin mdounin на mdounin.ru
Ср Авг 3 16:04:39 UTC 2016


Hello!

On Wed, Aug 03, 2016 at 11:54:16AM -0400, YuriV wrote:

> C учетом особенностей кода nginx эта директива тоже абсолютно бесполезна :(
> - у неё те же самые параметры, что и у proxy_cache_bypass. Т.е. она точно
> также не может полагаться на код ответа от бэка.

Полёт вашей мысли причудлив и занимателен, но, вероятно, никому 
кроме вас - не понятен.  Двайте я поясню, как оно работает, а вы 
уже решайте, насколько ваши мысли об этом совпадают с реальностью.  
И если вдруг совпадают - то поясните, что именно приводит вас к 
мысли о бесполезности.

При использовании кеша есть два момента времени, в которые можно 
принимать какие-то решения.

1. Первый момент - когда nginx получил запрос от клиента и думает, 
что именно отвечать.  В этот момент он может воспользоваться 
кешом, и, если там есть ответ, вернуть его клиенту.  Если этого 
делать не надо - то есть директива proxy_cache_bypass, которая 
позволяет "пропустить" использование кеша.  Но, очевидно, пытаться 
использовать что-либо из ответа бекенда в этот момент нельзя - 
т.к. к бекенду никто ещё не обращался.

2. Второй момент - когда nginx cходил на бекенд, получил ответ, и 
решает, сохранять ли его в кеш.  В этот момент сохранение можно 
явно запретить с помощью директивы proxy_no_cache.  И в ней вполне 
можно (и зачастую нужно) использовать то, что ответил бекенд.  Ибо 
мы как раз решаем, сохранять ли полученный ответ.

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



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