Make nginx avoid cache if response contains Vary Accept-Language
- by gioele
The cache module of nginx version 1.1.19 does not take the Vary header into account. This means that nginx will serve the same request even if the content of one of the fields specified in the Vary header has changed.
In my case I only care about the Accept-Language header, all the others have been taken care of.
How can I make nginx cache everything except responses that have a Vary header that contains Accept-Language?
I suppose I should have something like
location / {
proxy_cache cache;
proxy_cache_valid 10m;
proxy_cache_valid 404 1m;
if ($some_header ~ "Accept-Language") { # WHAT IS THE HEADER TO USE?
set $contains_accept_language # HOW SHOULD THIS VARIABLE BE SET?
}
proxy_no_cache $contains_accept_language
proxy_http_version 1.1;
proxy_pass http://localhost:8001;
}
but I do not know what is the variable name for "the Vary header received from the backend".