日安。我需要一些帮助,我无法在清漆中得到任何命中/未命中的响应。请帮帮我..提前谢谢..这是我的default.vcl配置。
backend default {
.host = "00.00.00.00";
.port = "80";
}
sub vcl_recv {
if (req.http.host == "www.example.com") {
unset req.http.cookie;
unset req.http.Vary;
}
else
{
return (pass);
}
}
sub vcl_backend_response {
set beresp.do_gzip = true;
unset beresp.http.Cache-Control;
set beresp.ttl = 1h;
set beresp.grace = 1w;
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}发布于 2016-10-18 16:22:33
您声明的唯一后端是0.0.0.0,您应该声明正确的后端ip或dns。
Varnish是一个反向代理,它不会遵循报头:Host => IP http way。它需要显式地声明转发请求的位置。
发布于 2016-10-18 22:53:05
你的后端端口指向了Varnish应该监听的地方。Varnish应该在80上侦听,并且后端默认值应该是Apache现在列出的端口。在您的VCL中,将其更改为:
backend default {
.host = "127.0.0.1";
.port = "82";
}您的/etc/varnish/varnish.params文件应将端口设置为80
VARNISH_LISTEN_PORT=80在您的http.conf中,您应该将Apache设置为在82上侦听。
Listen 0.0.0.0:82重新启动Apache,然后重新启动Varnish。现在,您将正确地将通信代理返回到Apache。我给出的IP是YMMV的例子。
正确的流程:
[Internet] <-> (80)[Varnish] <-> (82)[Apache].https://stackoverflow.com/questions/40100313
复制相似问题