我的应用程序的结构使您在访问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");
}
}
谢谢!
答案 0 :(得分:0)
我终于找到了正确的代码来解决这个问题:
if (req.http.host ~ "^" && req.url~ "/$") {
set req.http.host = "^";
set req.url = regsub(req.url, "/$", "/home");
}