Setting cache parameters via if directives

Jeff Mitchell jeff at jefferai.org
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 = "1.2.3.4") {
            set $cachevalidval "1m";
        }
        proxy_pass http://127.0.0.1:80;
        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...

Thanks,
Jeff



More information about the nginx mailing list