Cache/Proxy Varnish para múltiplas fontes

Cache/Proxy Varnish para múltiplas fontes

Estamos usando o verniz 3.0.3.

O site exibe imagens de dois domínios. Imagens que possuem o mesmo URL do domínio do site são armazenadas em cache com sucesso e veiculadas via Varnish. Imagens provenientes de um domínio diferente são ignoradas. Gostaríamos que todas as imagens fossem entregues via Varnish, independentemente de sua origem.

Eu tentei as duas abordagens. Estas são duas configurações de verniz muito simples. Essas duas configurações funcionam, mas as imagens do segundo domínio são ignoradas pelo Varnish. Quando observo a atividade do navegador, ele faz uma solicitação diretamente ao segundo domínio para que essas imagens sejam entregues pelo Varnish.

O backend possui todas as imagens de ambos os domínios. O site é apenas codificado para recuperar as imagens com dois domínios diferentes. Não consigo alterar o código do site para usar um domínio.

Um cenário semelhante seria se nosso site extraísse imagens de nossa conta do Flickr ou extraísse imagens de um CDN. Seria possível ter cache do Varnish e entregar essas imagens também? Entendo que especificaríamos outro back-end, mas em meus testes não consigo obter nada além do domínio primário a ser entregue pelo Varnish.

O objetivo por trás disso é servir como um ponto de presença da região. O servidor Varnish deve servir todo o conteúdo, em vez de o visitante extrair conteúdo de diferentes fontes/domínios.

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;
}

informação relacionada