Welcome! Log In Create A New Profile

Advanced

Re: Setting cache parameters via if directives

agentzh
February 01, 2011 03:50AM
On Fri, Jan 28, 2011 at 11:55 PM, Ryan Malayter <malayter@gmail.com> 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;
> }
>

I'm amazed to see the config above works for you. I'm not sure if
you're using some ancient versions of nginx that I know very little
about (like 0.6.x or 0.5.x or even earlier).

Consider the following config snippet:

location /test {
set $a 3;
if ($a = 3) {
set $a 4;
}
echo $a;
}

GET /test will give you nothing for nginx 0.7.21 ~ 0.9.4. Don't tell
me that the ngx_echo module's echo directive is buggy because it's too
dead simple to get wrong.

Basically for "modern" versions of nginx, the location "if" block
creates an anonymous nested location and will trap the execution flow,
that is, once you get in, you'll never go out of it to reach the
content phase. And that's one of the reasons why people call nginx's
"if" an evil monster ;)

Cheers,
-agentzh

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx
Subject Author Posted

Setting cache parameters via if directives

Jeff Mitchell January 28, 2011 12:10AM

Re: Setting cache parameters via if directives

Ryan Malayter January 28, 2011 11:00AM

Re: Setting cache parameters via if directives

Jeff Mitchell January 29, 2011 03:24AM

Re: Setting cache parameters via if directives

Jeff Mitchell January 29, 2011 11:10AM

Re: Setting cache parameters via if directives

agentzh February 01, 2011 03:50AM

Re: Setting cache parameters via if directives

agentzh February 01, 2011 03:56AM

Re: Setting cache parameters via if directives

Ryan Malayter February 01, 2011 10:50AM

Re: Setting cache parameters via if directives

valor January 29, 2011 07:02PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 151
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready