我们的清漆配置如下:
backend default { .host = "127.0.0.1"; .port = "80"; .max_connections = 300; .probe = { .url = "/webapp-context/healthcheck"; .interval = 60s; .timeout = 20s; .window = 5; .threshold = 3; } .first_byte_timeout = 5s; .connect_timeout = 5s; .between_bytes_timeout = 1s; }
sub vcl_recv { // do not cache static files if ( req.url ~ "^(/staticfiles)" ) { return(pass); } // create cache if ( req.url ~ "^(/content/)" ) { unset req.http.Cookie; return(hash); } ... ... }
所以,我的问题是:我们已经配置了清漆来做"传递"对于静态文件上下文。现在,当我们的后端在探测验证后生病时,所有静态文件上下文都会出现HTTP 503错误,但是在Varnish缓存上html页面仍然可以,但没有静态文件。
有没有办法配置Varnish来保持从Apache提供所有静态文件,即使应用程序服务器已关闭?
答案 0 :(得分:1)
您可以设置其他后端定义,该定义不会指定运行状况检查。所以你的VCL将包含以下内容:
backend static {
.host = "127.0.0.1";
.port = "80";
.max_connections = 300;
}
# .. your default backend with probe here
sub vcl_recv {
# ...
// do not cache static files
if ( req.url ~ "^(/staticfiles)" ) {
set req.backend_hint = static;
return(pass);
}
# ,,,
}