根据请求URL更改清漆TTL

时间:2015-11-03 03:29:34

标签: regex varnish varnish-vcl

我有多个子域指向一个varnish实例。我在文档中读到应该使用PCRE正则表达式。我相信下面的正则表达式应该在请求url为“http://internal.my.com/any/thing”并且应该设置15s ttl时返回true。我也试过(req.url~“internal.my.com”),因为我知道如果请求url的任何部分包含该字符串,它应该匹配。尽管向internal.my.com发出请求,但下面的vcl_fetch子例程始终会产生300s缓存。

# 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;
  }
}

1 个答案:

答案 0 :(得分:0)

哎呀...我应该使用req.http.host而不是req.url。一旦纠正,一个简单的误解会导致预期的行为。