Setting cache parameters via if directives
    Ryan Malayter 
    malayter at gmail.com
       
    Fri Jan 28 18:55:37 MSK 2011
    
    
  
On Thu, Jan 27, 2011 at 11:08 PM, Jeff Mitchell <jeff at jefferai.org> wrote:
>    location = / {
>        if ($remote_addr = "1.2.3.4") {
>            proxy_pass http://127.0.0.1:80;
>            proxy_cache gitweb;
>            proxy_cache_valid 200 20m;
>            proxy_read_timeout 300;
>            proxy_send_timeout 300;
>        }
>        proxy_pass http://127.0.0.1:80;
>        proxy_cache gitweb;
>        proxy_cache_valid 200 60m;
>        proxy_cache_use_stale off;
>        proxy_read_timeout 60;
>        proxy_send_timeout 60;
>    }
>
> Any help much appreciated.
I do something similar using the conditinal setting of variables
inside the if block to set Cache-Control values, perhaps you can use a
similar method to set the values of proxy_cache_valid. Since setting
variables is one of the few "safe" things to do inside an if block,
and most directives can take variables as agurments, it is generally
useful.
location / {
   set $mycc = "private, max-age=0";
   if ($foo = "bar") {
      set $mycc = "public, max-age=3600"
      }
  proxy_pass http://backend;
  add_header Cache-Control $mycc;
}
-- 
RPM
    
    
More information about the nginx
mailing list