Varnish: cache only specific domain
(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); }}