Varnish Cache/Proxy für mehrere Quellen

Varnish Cache/Proxy für mehrere Quellen

Wir verwenden Varnish 3.0.3.

Die Website stellt Bilder von zwei Domänen bereit. Bilder, die dieselbe URL wie die Domäne der Website haben, werden erfolgreich zwischengespeichert und über Varnish bereitgestellt. Bilder, die von einer anderen Domäne stammen, werden ignoriert. Wir möchten, dass alle Bilder über Varnish bereitgestellt werden, unabhängig davon, woher sie stammen.

Ich habe beide Ansätze ausprobiert. Dies sind zwei sehr einfache Varnish-Konfigurationen. Diese beiden Konfigurationen funktionieren, aber Bilder aus der zweiten Domäne werden von Varnish ignoriert. Wenn ich die Aktivität des Browsers beobachte, stellt er eine Anfrage direkt an die zweite Domäne für diese Bilder, anstatt sie von Varnish zu liefern.

Das Backend enthält alle Bilder für beide Domänen. Die Website ist nur so codiert, dass die Bilder mit zwei verschiedenen Domänen abgerufen werden. Ich kann den Code der Website nicht ändern, um eine Domäne zu verwenden.

Ein ähnliches Szenario wäre, wenn unsere Website Bilder von unserem Flickr-Konto oder von einem CDN abrufen würde. Wäre es möglich, Varnish zwischenzuspeichern und diese Bilder ebenfalls bereitzustellen? Mir ist klar, dass wir ein anderes Backend angeben würden, aber bei meinen Tests kann ich nichts anderes als die primäre Domäne erreichen, die von Varnish bereitgestellt wird.

Der Zweck dahinter besteht darin, als Standort am Rande einer Region zu dienen. Der Varnish-Server sollte alle Inhalte bereitstellen, anstatt dass der Besucher Inhalte aus verschiedenen Quellen/Domänen abruft.

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

verwandte Informationen