Jun 212011
 

Seit dem 16.6.2011 gibt es die neue Version 3.0 des Vanish-Caches. Wir haben ja schon in einigen anderen Artikeln gezeigt wie sich Webseiten mit dem Varnish beschleunigen lassen. Beim Update auf den Varnish3 mussten wir einige Änderungen an unserer Konfiguration vornehmen.

Die Installation von Varnish3 ist dank vorhandener Pakete für Ubuntu sehr einfach

http://www.varnish-cache.org/installation/ubuntu

Hier erst einmal das komplette VCL für einen Cache für mehrere TYPO3-Webseiten und einen größeren WordPress-Blog.

 backend default {
.host = "xxx.xxx.xxx.xxx";
.port = "80";
}

backend default2 {
.host = "xxx.xxx.xxx.xxx";
.port = "80";
}

backend local {
.host = "127.0.0.1";
.port = "8080";
}

sub vcl_recv {

##No-Cache nur verarbeiten wenn die Seite nicht über einen Proxy und nicht
#vom MSN-Bot aufgerufen wird
if (req.http.Cache-Control ~ "no-cache") {
if (! (req.http.Via || req.http.User-Agent ~ "bot|MSIE")) {
ban (req.url);
}
}

##TYPO3-Backend nicht cachen
if (req.http.cookie ~ "be_typo_user"){
return (pass);
}
else if (req.http.host ~ "domain.tld"){
}
else{
##Cookies von TYPO3-Seiten löschen
unset req.http.Cookie;
}

if (req.http.x-forwarded-for) {
set req.http.X-Forwarded-For =
req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}

##Richtiges Backend wählen
if (req.http.host ~ "domain.tld") {
set req.backend = default2;
}
else if (req.http.host ~ "lb1.lamp-solutions.de") {
set req.backend = local;
}
else {
set req.backend = default;
}
if (req.request != "GET" &&
req.request != "HEAD" &&
req.request != "PUT" &&
req.request != "POST" &&
req.request != "TRACE" &&
req.request != "OPTIONS" &&
req.request != "DELETE") {
#         /* Non-RFC2616 or CONNECT which is weird. */
return (pipe);
}
if (req.request != "GET" && req.request != "HEAD") {
#         /* We only deal with GET and HEAD by default */
return (pass);
}
if (req.http.Authorization || req.http.Cookie) {
#         /* Not cacheable by default */
return (pass);
}
return (lookup);
}

#Wenn Seite vom Server geholt wird
sub vcl_fetch {

##No-Cache vom Server auswerten damit Varnish kapiert wenn TYPO3-Cache geleert wird
if (beresp.http.Pragma ~ "nocache") {
if (! (req.http.Via || req.http.User-Agent ~ "bot|MSIE")) {
return (hit_for_pass);
}
}
}

# Wenn Anfrage aus dem Cache geholt wird
sub vcl_hit {

if (req.http.Cache-Control ~ "no-cache") {
if (! (req.http.Via || req.http.User-Agent ~ "bot|MSIE")) {
set obj.ttl = 0s;
return (restart);
}
}
return(deliver);
}

Vor allem ist zu beachten, dass es die Option purge_url nicht mehr gibt. Statt dessen gibt es die neue Option ban http://www.varnish-cache.org/docs/trunk/tutorial/purging.html

Im Abschnitt vcl_fetch ist seit der Version 3.0 die Rückgabe (pass) nicht mehr erlaubt, daher ist sie durch hit_for_pass ersetzt worden.

Unbedingt beachten sollten man auch, dass es bis zur Version 2.1 noch erlaubt war

req.http.X-Forwarded-For  ", " client.ip;

zu schreiben.

Ab der Version 3.0 ist die Syntax etwas strenger geworden:

req.http.X-Forwarded-For + ", " + client.ip;

 Antworten

Du kannst diese HTML Tags und Attribute benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(Pflichtfeld)

(Pflichtfeld)

© 2017 LAMP solutions GmbH