我已经进行了积极的谷歌搜索,但没有什么收获。
我正在使用Varnish,并取得了不错的成果,但我想在单个服务器(Apache)上托管多个网站,而不让 Varnish 缓存它们所有的内容。
我能否通过URL指定要缓存哪些网站?
谢谢
我已经进行了积极的谷歌搜索,但没有什么收获。
我正在使用Varnish,并取得了不错的成果,但我想在单个服务器(Apache)上托管多个网站,而不让 Varnish 缓存它们所有的内容。
我能否通过URL指定要缓存哪些网站?
谢谢
(在评论后编辑)它是req.http.host,因此在您的vcl文件(例如default.vcl)中执行以下操作:
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;
}
}
并且在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);
}
}
是的,在vcl_recv中,您只需匹配您不想缓存并传递它们的主机。类似这样(未经测试):
vcl_recv {
# dont cache foo.com or bar.com - optional www
if (req.host ~ "(www)?(foo|bar).com") {
return(pass);
}
}
sub vcl_recv
和 req.http.host
。 - m3nda将lookup替换为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);
}
}
sub vcl_fetch {
中有一个相应的return(hit_for_pass);
,无论在sub vcl_recv {
中有多少个return(pass);
。 - yitwail