【发布时间】:2023-03-26 03:17:01
【问题描述】:
我正在为具有大量 (1000+) 命名虚拟主机(在 Apache 上)的服务器实施 Varnish (4.0),其中大多数都指向相同的 IP 和 Web。我让 Varnish 可以正常工作:
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^www.domain1.de(:[0-9]+)?$") {
set req.http.host = "www.domain1.de";
} else if (req.http.host ~ "^www.domain2.de(:[0-9]+)?$") {
set req.http.host = "www.domain2.de";
}
....
....
set req.backend_hint = default;
}
但是,为 1000 多个域执行此操作似乎有点奇怪。我不需要对站点进行任何特殊配置,它们的后端都相同。
如果我不添加任何特定配置,我只会进入标准网站(无论我输入什么域)。
关于如何解决这个问题的任何提示? 谢谢!
【问题讨论】:
-
你想用你在例子中展示给我们的东西来实现什么?
-
如前所述,它会像这样到达正确的域。但我需要重复这个超过 1000 次......
-
我的意思是,如果请求主机已经包含正确的主机名,为什么还要设置
host?无需再次显式设置。
标签: apache varnish varnish-vcl