if-none-match with proxy_cache : properly set headers
Maxim Dounin
mdounin at mdounin.ru
Thu May 30 11:21:44 UTC 2013
Hello!
On Thu, May 30, 2013 at 06:41:50AM -0400, kapouer wrote:
> Hi,
> i struggled a little to get nginx to cache 304 responses from backend using
> proxy_cache.
> What happens when configuring proxy_cache is that 304 responses are not
> happening because
> nginx strips If-None-Match request headers. It is a workaround to prevent
> the client from getting
> an empty response event if he did not send If-None-Match in the header.
> A better workaround can be :
>
> proxy_cache_key $http_if_none_match$scheme$proxy_host$request_uri;
>
> So that the cache sends 304 if the header is properly set, and 200 if it
> isn't.
> Of course one has to kill the first workaround :
>
> proxy_set_header If-None-Match $http_if_none_match;
>
> and cache both responses :
>
> proxy_cache_valid 200 304 1h;
>
> Comments welcome.
Normally you shouldn't cache 304 responses from a backend, but
rather cache 200 responses from a backend and let nginx to return
304 by its own. This is how it works by default.
Do you have problems with the default aproach?
--
Maxim Dounin
http://nginx.org/en/donation.html
More information about the nginx
mailing list