Setting cache parameters via if directives

Jeff Mitchell jeff at
Sat Jan 29 19:05:52 MSK 2011

On 01/29/2011 03:19 AM, Jeff Mitchell wrote:
> On 01/28/2011 10:55 AM, Ryan Malayter wrote:
>> 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;
>> }
> Great idea, thank you.

Unfortunately, this doesn't work:

        set $cachevalidval "60m";
        if ($remote_addr = "") {
            set $cachevalidval "1m";
        proxy_cache gitweb;
        proxy_cache_valid any $cachevalidval;

I get complaints that $cachevalidval is an invalid time value. I've
tried doing things like having $cachevalidval only have a number and
then using "$cachevalidval"m but nothing works so far...


More information about the nginx mailing list