El otro día comentamos cómo instalar Varnish en nuestro equipo y configurarlo para que cachee contenidos a nivel local, pero también hablamos de que podía hacer de proxy inverso para nuestros sistemas. Es decir, podemos tener un número n de servidores con Apache (por ejemplo) sirviendo una página web y que todo el contenido estático lo sirva Varnish, dejando la parte dinámica en round-robin entre los servidores de backend. Toda la configuración es la misma que la presentada en el post de instalación. Lo único que cambiará será el contenido del fichero /etc/varnish/default.vcl, que contendrá los equipos a los que conectarse.
director www_master round-robin { { .backend = { .host = "192.168.0.33"; .port = "http"; } } { .backend = { .host = "192.168.0.34"; .port = "http"; } } } sub vcl_recv { set req.backend = www_master; remove req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; }E incluso una configuración más compleja, con varios virtualhost y varios servidores de backend
director web_master round-robin { { .backend = { .host = "192.168.0.33"; .port = "http"; } } { .backend = { .host = "192.168.0.34"; .port = "http"; } } } director mail_master round-robin { { .backend = { .host = "192.168.0.37"; .port = "8080"; } } { .backend = { .host = "192.168.0.65"; .port = "80"; } } } director photos_master round-robin { { .backend = { .host = "192.168.0.100"; .port = "http"; } } } sub vcl_recv { if (req.http.host ~ "^(mail.|webmail.)?domain.(com)$") { set req.backend = mail_master; } if (req.http.host ~ "^(fotos.|photos.)doamin.(com)$") { set req.backend = photos_master; } if (req.http.host ~ "^(www.)?doamin.(com)$") { set req.backend = web_master; } remove req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; }