
Ich habe gerade angefangen, mich über Varnish zu informieren und überlege, es als Frontend für meine Webserver zu verwenden. Auf meinem Webserver befinden sich mehrere Domänen, die bei Verwendung derselben Abfragezeichenfolgen denselben Inhalt abrufen. Nehmen wir also an, ein Client besucht:
http://domain1.com/script.php?string1=abc&string2=123
Und später kommt jemand anderes zu Besuch:
http://domain2.com/script.php?string1=abc&string2=123
Würde Varnish die Ergebnisse des ersten Besuchs zwischenspeichern und für den zweiten Client verwenden? Danke!
BEARBEITEN:Nach einigem Lesen klingt es, als ob Folgendes funktionieren könnte:
sub vcl_hash {
set req.hash += req.url;
return (hash);
}
Anstatt die Variable http.host zum Hash hinzuzufügen, wird sie ignoriert.
Antwort1
Sie können es mehr oder weniger so konfigurieren. Standardmäßig wird (und sollte) es das nicht tun.
Ich habe eine Site mit vielen Hostnamen. Wie verhindere ich, dass sie den Cache vervielfachen?
Sie können dies tun, indem Sie den Header „Host“ für alle Ihre Hostnamen normalisieren. Hier ist ein VCL-Beispiel:
if (req.http.host ~ "^(www.)?example.com") { set req.http.host = "example.com"; }
Antwort2
Ich habe 3 Domänen auf meiner VM, ich verwende Nginx und Varnish, derzeit verwende ich eine Pre-Prod-Konfiguration und Folgendes mache ich:
NGINX:80 ==> VARNISH:8080 ==> NGINX:8081
Ich verwende Nginx:80 als Proxy, WENN die Domain Varnish benötigt, andernfalls verwende ich FastCGI-Sachen. In diesem Beispiel sind die Websites, die nicht Varnish verwenden, nicht von Varnish betroffen. Es sieht blöd aus, aber es funktioniert ;-) und keiner meiner Kunden beschwert sich (noch) nicht....