根据请求更改 Varnish TTL URL
Alter Varnish TTL based on Request URL
我有多个子域指向一个 varnish 实例。我在文档中读到应该使用 PCRE 正则表达式。我相信当请求 url 是“http://internal.my.com/any/thing”并且应该设置 15s ttl 时,我下面的正则表达式应该 return 为真。我也试过 (req.url ~ “internal.my.com”),因为我读到如果请求 url 的任何部分包含该字符串,它应该匹配。尽管向 internal.my.com.
发出请求,下面的 vcl_fetch 子例程总是产生 300 秒的缓存
# Cache for a longer time if the internal.my.com URL isn't used
sub vcl_fetch {
if (req.url ~ "^[(http:\/\/)|(https:\/\/)]*internal\.my\.com.*"){
set beresp.ttl = 15 s;
} else {
set beresp.ttl = 300 s;
}
}
糟糕...我应该使用 req.http.host 而不是 req.url。一个简单的误解一旦纠正就会导致预期的行为。
我有多个子域指向一个 varnish 实例。我在文档中读到应该使用 PCRE 正则表达式。我相信当请求 url 是“http://internal.my.com/any/thing”并且应该设置 15s ttl 时,我下面的正则表达式应该 return 为真。我也试过 (req.url ~ “internal.my.com”),因为我读到如果请求 url 的任何部分包含该字符串,它应该匹配。尽管向 internal.my.com.
发出请求,下面的 vcl_fetch 子例程总是产生 300 秒的缓存# Cache for a longer time if the internal.my.com URL isn't used
sub vcl_fetch {
if (req.url ~ "^[(http:\/\/)|(https:\/\/)]*internal\.my\.com.*"){
set beresp.ttl = 15 s;
} else {
set beresp.ttl = 300 s;
}
}
糟糕...我应该使用 req.http.host 而不是 req.url。一个简单的误解一旦纠正就会导致预期的行为。