开发者

Varnish: cache only specific domain

开发者 https://www.devze.com 2023-01-16 05:18 出处:网络
I have been Googling aggressively, but without luck. I\'m using Varnish with great results, but I would like to host multiple websites on a single se开发者_Python百科rver (Apache), without Varnish ca

I have been Googling aggressively, but without luck.

I'm using Varnish with great results, but I would like to host multiple websites on a single se开发者_Python百科rver (Apache), without Varnish caching all of them.

Can I specify what websites by URL to cache?

Thanks


(edited after comment) It's req.http.host, so in your vcl file (e.g. default.vcl) do:

sub vcl_recv {
  # dont cache foo.com or bar.com - optional www
   if (req.http.host ~ "(www\.)?(foo|bar)\.com") {
     pass;
   }
  # cache foobar.com - optional www
   if (req.http.host ~ "(www\.)?foobar\.com") {
     lookup;
   }
}

And in varnish3-vcl:

sub vcl_recv {
  # dont cache foo.com or bar.com - optional www
   if (req.http.host ~ "(www\.)?(foo|bar)\.com") {
     return(pass);
   }
  # cache foobar.com - optional www
   if (req.http.host ~ "(www\.)?foobar\.com") {
     return(lookup);
   }
}


Yes,

in vcl_recv you just match the hosts that you would like not to cache and pass them. Something like this (untested):

vcl_recv {
   # dont cache foo.com or bar.com - optional www
   if (req.host ~ "(www)?(foo|bar).com") {
     return(pass);
   }
}


For Varnish 4

replace lookup with hash

default.vcl:

sub vcl_recv {
  # dont cache foo.com or bar.com - optional www
   if (req.http.host ~ "(www\.)?(foo|bar)\.com") {
     return(pass);
   }
  # cache foobar.com - optional www
   if (req.http.host ~ "(www\.)?foobar\.com") {
     return(hash);
   }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号