У нас есть сервер, который должен служить нескольким доменам хотя лак, например, example1.com, example2.com и example3.com
Наш текущий .vcl файл похож на это:
sub vcl_recv {
set req.http.Host = "example1.com";
lookup;
}
Как я устанавливаю корректный req.http. Хост к корректному входящему запросу?
Вы можете поддерживать несколько внешних доменов следующим образом:
backend example1 {
.host = "backend.example1.com";
.port = "8080";
}
backend example2 {
.host = "backend.example2.com";
.port = "8080";
}
sub vcl_recv {
if (req.http.host == "example1.com") {
#You will need the following line only if your backend has multiple virtual host names
set req.http.host = "backend.example1.com";
set req.backend = example1;
return (lookup);
}
if (req.http.host == "example2.com") {
#You will need the following line only if your backend has multiple virtual host names
set req.http.host = "backend.example2.com";
set req.backend = example2;
return (lookup);
}
}
Я использую настройку, аналогичную настройке Кристиана, но в предложениях if я сопоставляю req.http.host с регулярным выражением:
#for www.example.com or example.com
if (req.http.host ~ "^(www\.)?example\.com$") {
set req.backend = example_com;
return (lookup);
}
#with any subdomain support
if (req.http.host ~ "^(.*\.)?example2\.com$") {
set req.backend = example2_com;
return (lookup);
}
Не забудьте правильно настроить серверные ВМ!