使用Varnish服务/主页缓存到主域

时间:2014-06-30 21:19:11

标签: url-rewriting varnish vcl

我的应用程序的结构使您在访问www.example.com时可以重定向到www.example.com/home。所以,这意味着我在主域上没有任何内容,只有一个文件将用户重定向到/ home。

我意识到Varnish正在缓存www.example.com/home,所以当我访问www.example.com时,它不会为我提供缓存页面。我使用www.example.com/home对Blitz进行了压力测试,效果很好。它可以轻松处理300个并发用户。但是当我测试www.example.com时,它会在前几秒内中断,这意味着它不会为缓存页面提供服务。这是预料之中的,因为Varnish不知道我想服务/回家。

所以,我尝试了几种方法来“告诉”Varnish在访问主域名时服务/回家,但我无法做到正确。

我试图使用“regsub”和“set req.http.host”的规则作为下面的一个但是无法按照我需要的方式运行它。如果有人能指出我正确的方向,我将非常感激。

sub vcl_recv {

if (req.http.host == "example.com") {
                set req.http.host = "example.com";
                set req.url = regsub(req.url, "", "/home");
        }

}

谢谢!

1 个答案:

答案 0 :(得分:0)

我终于找到了正确的代码来解决这个问题:

if (req.http.host ~ "^" && req.url~ "/$") {
  set req.http.host = "^";
  set req.url = regsub(req.url, "/$", "/home");
}
相关问题