Url rewriting 使用Varnish向主域提供服务/主缓存

Url rewriting 使用Varnish向主域提供服务/主缓存,url-rewriting,varnish,vcl,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.co

我的应用程序的结构是,当你访问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”和“setreq.http.host”规则,但无法按我需要的方式工作。如果有人能为我指出正确的方向,我将不胜感激

sub vcl_recv {

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

}

谢谢

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

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