Disable NGINX caching 304 Responses from Origin Server
Ryan Barclay
ryan at rbftpnetworks.com
Wed Jul 26 07:29:12 UTC 2017
The following config seems to work for the situation I discussed:
proxy_cache_valid 200 3M;
proxy_cache_valid 304 0;
proxy_cache_revalidate on;
proxy_set_header If-Modified-Since $http_if_modified_since;
proxy_ignore_headers Cache-Control Expires;
... can anybody see any problems with this config or future problems
that may arise?
On 24/07/2017 16:20, Ryan Barclay wrote:
> We have a pretty simple setup with NGINX sitting on the front and a
> backend server (on a separate physical server) that provides the content.
>
> Nginx then caches content based on the EXPIRES and Cache-Control
> headers set by the origin server.
>
> We noticed that NGINX was not issuing 304 headers to images that were
> not in the local NGINX cache when the If-Modified-Since header was
> sent by the client. Instead, it would issue a 200 with the full data
> file.
>
> To fix this, we applied:
> proxy_set_header If-Modified-Since $http_if_modified_since
>
> So then the If-Modified-Since header was passed to the backend and of
> course, it returned correctly with the 304 header - great.
>
> But what we noticed was that NGINX would cache this 304 response and
> deliver future responses as 304 to clients even without the
> If-Modified-Since header.
>
> How can we disable caching of 304 responses and fix this issue?
>
> Thank you for your help, suggestions, and tips in advance.
More information about the nginx
mailing list