change ttl based on request url

Viktor Villafuerte viktor.villafuerte at optusnet.com.au
Tue Nov 3 08:07:16 CET 2015


Hi Ryan,

you're mixing req.url with req.http.host

Also be aware of changes between Varnish 3 and 4. You didn't specified
which version you're using so I won't go into details. Those can be
found here
https://www.varnish-cache.org/docs/4.0/whats-new/upgrading.html


On Mon 02 Nov 2015 22:22:10, Ryan Morgan wrote:
> I have multiple subdomains pointing to one varnish instance. I read in the documentation that PCRE regex should be used. I believe the regex I have below should return true when the request url is “http://internal.my.com/any/thing <http://internal.my.com/any/thing>” and the 15s ttl should be set. I’ve tried just (req.url ~ “internal.my.com <http://internal.my.com/>”) as well because I read that it should match if any part of the request url. Help is appreciated! Thanks!
> 
> -Ryan
> 
> # Cache for a longer time if the internal.my.com URL isn't used
> sub vcl_fetch {
>   if (req.url ~ "^[(http:\/\/)|(https:\/\/)]*internal\.my\.com.*"){

what you're matching here is req.http.host and so the statement never
returns true because it never matches

Also I don't like the way the regex looks. I have not tested this so
quite possibly it works but it's bit ugly. I'm sure simpler and cleaner
regex could/should be found.


v


>     set beresp.ttl = 15 s;
>   } else {
>     set beresp.ttl = 300 s;
>   }
> }

> _______________________________________________
> varnish-misc mailing list
> varnish-misc at varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc


-- 
Regards

Viktor Villafuerte
Optus Internet Engineering
t: +61 2 80825265



More information about the varnish-misc mailing list