Varnish HTTP 缓存服务
Varnish 是 HTTP 反向代理缓存,用 VCL 描述缓存策略。它适合静态内容和可缓存的 API 响应,能显著降低后端压力。
varnishd -f /etc/varnish/default.vcl -s malloc,2g -a :80
varnishd -C -f /etc/varnish/default.vcl
varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
varnishadm 'vcl.list'
varnishadm 'backend.list'
varnishadm 'ban req.url ~ "^/old"'
varnishlog
varnishstat
varnishncsa
varnishreload
VCL 要点:
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
if (req.method != "GET" && req.method != "HEAD") {
return (pass);
}
if (req.url ~ "^/api/") {
return (pass);
}
}
sub vcl_backend_response {
set beresp.ttl = 60s;
}
varnishd -C 编译检查。vcl_recv 处理。pass 会绕过缓存;确认哪些路径应该缓存。grace 影响命中率和后端压力。malloc 大小要按缓存量设置;不足会频繁淘汰。varnishadm backend.list 是排障入口。varnishd — 服务端varnishadm — 管理varnishlog / varnishstat — 日志与指标