Varnish Caché/Proxy para múltiples fuentes

Varnish Caché/Proxy para múltiples fuentes

Estamos usando Varnish 3.0.3.

El sitio web ofrece imágenes de dos dominios. Las imágenes que tienen la misma URL que el dominio del sitio se almacenan en caché correctamente y se publican a través de Varnish. Se ignoran las imágenes procedentes de un dominio diferente. Nos gustaría que todas las imágenes se entreguen a través de Varnish, independientemente de su procedencia.

Probé los dos enfoques. Estas son dos configuraciones de Varnish muy simples. Estas dos configuraciones funcionan, pero Varnish ignora las imágenes del segundo dominio. Cuando observo la actividad del navegador, realiza una solicitud directamente al segundo dominio para que esas imágenes sean entregadas por Varnish.

El backend tiene todas las imágenes de ambos dominios. El sitio web simplemente está codificado para recuperar las imágenes con dos dominios diferentes. No puedo cambiar el código del sitio web para usar un dominio.

Un escenario similar sería si nuestro sitio web extrajera imágenes de nuestra cuenta de Flickr o de una CDN. ¿Sería posible tener caché de Varnish y entregar esas imágenes también? Entiendo que especificaríamos otro backend, pero en mis pruebas no puedo obtener nada más que el dominio principal que Varnish entregará.

El propósito detrás de esto es servir como ubicación de borde de región. El servidor Varnish debe servir todo el contenido en lugar de que el visitante extraiga contenido de diferentes fuentes/dominios.

1.

backend  default {
.host = "192.168.1.1";
.port = "http";
}

sub vcl_recv {
if (req.url ~ "\.(gif|jpg|jpeg|png)$") {
unset req.http.cookie;
unset req.http.Accept-Encoding;
unset req.http.Vary;
set req.backend = default;
return(lookup);
}
}

sub vcl_fetch {
set beresp.ttl = 24h;
set beresp.grace = 23h;
}

2.

backend  default {
.host = "192.168.1.1";
.port = "http";
}

sub vcl_recv {
#Primary domain of site
if (req.http.host == "www.domain.com") {
set req.backend = default;
return (lookup);
#Domain where images are stored
} elsif (req.http.host == "www.domain2.com") {
set req.backend = default;
return (lookup);
}
}

sub vcl_fetch {
set beresp.ttl = 24h;
set beresp.grace = 23h;
}

información relacionada