Может ли Varnish перенаправить трафик на разные IP-адреса на основе URL-адреса?
Например, возможна следующая установка (и если да, то как будет выглядеть VCL):
foo и bar (по большей части) совершенно не связанные сайты. Они используют движок, но имеют разный контент и свою собственную отдельную базу данных. Поскольку раньше за это не взимались штрафы (кроме стоимости), мы разделили их на два отдельных блока, чтобы тонна трафика фу не окажет негативного влияния на посетителей, просматривающих бар.
Я мог бы настроить два экземпляра varnish и сделать так, чтобы один из них обслуживал статический контент foo, а другой - bar, но, поскольку кажется, что запуск Varnish не связан с большими расходами, я думаю (возможно, ошибочно), что это имело бы больше смысла использовать один сервер Varnish, который перенаправляет трафик в соответствующий ящик при промахе кеша.
Да, это так. Попробуйте сначала определить в default.vcl свои бэкенды:
backend foo {
.host = "1.2.3.4"; # IP of foo backend
.port = "80";
}
backend bar {
.host = "1.2.3.6"; # IP of bar backend
.port = "80";
}
и использовать в коде vcl_recv () аналогично:
if (req.http.host ~ "foo.example.com") {
set req.backend = foo;
}else{
set req.backend = bar;
}
Есть хорошая документация (достаточно хороша для таких примеров;)) по http://www.varnish-cache.org/docs/2.1/ и вы можете сделать гораздо больше с VCL. Это действительно круто.