Nginx doesn't honor Cache-Control: no-cache _request_

Igor Sysoev is at rambler-co.ru
Mon Aug 3 15:17:09 MSD 2009


On Mon, Aug 03, 2009 at 12:41:31PM +0200, Miros??aw Jaworski wrote:

> Hello 
> 
> RFC2616 14.9.4 Cache Revalidation and Reload Controls
> "End-to-end reload" 
> [...]The server MUST NOT use a cached copy when responding to such a
> request[...]
> 
> Such a request can be triggered from the browser by holding SHIFT
> and using reload button; it's often used by web developers to get
> uncached response from the original server. Unfortunately nginx seems
> to ignore such request and answers from the cache.
> 
> Is it possible to make a quick workaround bypassing the cache for such
> requests using some request header variable conditional if?
> 
> server {
>         listen       127.0.0.1:8000;
>         server_name  localhost;
> 
>         location / {
>             proxy_pass         http://192.168.10.10:80/;
>             proxy_redirect     off;
> 
>             if ($request_header !~ "Cache-Control: no-cache") {
>               proxy_cache        one;
>               proxy_cache_valid  200 1h;
>             }
>             proxy_pass_header  Set-Cookie;
> 
>             proxy_set_header Host             $host;
>             proxy_set_header X-Real-IP        $remote_addr;
>             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>         }
>     }
> 
> ?

No, currently nginx ignores the reload because everyone may flush
popular and heavy generated pages from your cache.
I plan to allow reload only from limited set of addresses.


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list