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

Mirosław Jaworski mjaw at
Mon Aug 3 14:41:31 MSD 2009


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

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 {
        server_name  localhost;

        location / {
            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;


Mirosław "Psyborg" Jaworski
GCS/IT d- s+:+ a C++$ UBI++++$ P+++$ L- E--- W++(+++)$ N++ o+ K- w-- O-
M- V- PS+ PE++ Y+ PGP t 5? X+ R++ !tv b++(+++) DI++ D+ G e* h++ r+++ y?
              "Friendship is like money, easier made than kept."

More information about the nginx mailing list