我设置了几个后端,在 VCL 中检测到每个后端,然后应用正确的设置。这适用于某些站点,但有些站点会指向同一个站点。
我已经阅读并应用了它,它适用于某些人,但不适用于其他人。
例如,我定义了一些后端:
backend site4 {
.host = "127.0.0.1";
.port = "81";
}
backend site3 {
.host = "127.0.0.1";
.port = "81";
}
backend site2 {
.host = "127.0.0.1";
.port = "81";
}
backend site1 {
.host = "127.0.0.1";
.port = "81";
}
然后在vcl_recv
我设置主机和正确的后端:
if (req.http.host ~ "(?i)^(www.)?site1.co.uk")
{
set req.http.host = "www.site1.co.uk";
set req.backend = site1;
}
elsif (req.http.host ~ "(?i)^(www.)?site2.co.uk")
{
set req.http.host = "www.site2.co.uk";
set req.backend = site2;
}
elsif (req.http.host ~ "(?i)^(www.)?site3.com")
{
set req.http.host = "www.site3.com";
set req.backend = site3;
}
elsif (req.http.host ~ "(?i)^(www.)?site4.net")
{
set req.http.host = "www.site4.net";
set req.backend = site4;
}
www.site1.co.uk 和 www.site2.co.uk 一样有效,但 www.site3.com 和 www.site4.net 都显示 www.site2.co.uk 的内容 - 就像它忽略了我的后端并且只对某些站点使用相同的站点。
主机设置正确,因为如果我这样做:
curl -I http://site3.com
在使用以下内容时vcl_fetch
set beresp.http.X-Host = req.http.host;
我可以看到主机正确设置为 www.site3.com
有什么想法吗?
旁注,是否有更短的方法来定义我的后端?