Webserver Konfiguration · 3 min read · Jan 01, 2026
Varnish Vor Apache Auf Ubuntu/Debian Einrichten
Varnish Vor Apache Auf Ubuntu/Debian Einrichten
Version 1.0, 15-10-2010
Folge mir auf Twitter
Varnish ist ein Open-Source-“Webbeschleuniger”, den du verwenden kannst, um deine Website zu beschleunigen.
Es kann bestimmte statische Elemente wie Bilder oder Javascript cachen, aber du kannst es auch für andere Zwecke wie Lastverteilung oder zusätzliche Sicherheit verwenden.
In diesem Tutorial konzentrieren wir uns auf Letzteres.
In diesem Modus wird Varnish unvollständige HTTP-Anfragen daran hindern, deinen Apache-Webserver zu erreichen.
Dieses Tutorial basiert auf Ubuntu, sollte aber wahrscheinlich auch auf Debian funktionieren.
Zuerst stelle sicher, dass du Apache2 ausführst und es konfiguriert hast.
Varnish installieren
Das ist ziemlich einfach, da es im Ubuntu-Repository enthalten ist. Du möchtest jedoch möglicherweise das Varnish-Repository verwenden, um sicherzustellen, dass du eine neuere Version hast. Um dies hinzuzufügen, führe Folgendes aus:
sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -sudo echo "deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-2.1" >> /etc/apt/sources.listAktualisiere APT und installiere Varnish:
sudo apt-get updatesudo apt-get install varnishSuper, jetzt hast du Varnish, aber wir müssen es noch konfigurieren.
Varnish-Einstellungen ändern
Zuerst müssen wir den Standardport ändern. Bearbeite /etc/default/varnish:
vim /etc/default/varnishScrolle ein wenig nach unten, bis du eine nicht auskommentierte Zeile findest, die mit “ DAEMON_OPTS “ beginnt.
- Ändere :6081* in :80*, damit es auf dem Standard-HTTP-Port lauscht.
- Bearbeite default.vcl in etwas anderes, ich habe “mysite.vcl” gewählt.
Speichere die Datei.
Bearbeite die VCL-Datei, die du in der vorherigen Datei erwähnt hast. In meinem Fall werde ich /etc/varnish/mysite.vcl bearbeiten. Füge den folgenden Inhalt ein:
## Anfragen an Apache weiterleiten, der auf Port 8000 auf localhost läuft
backend apache {
.host = "127.0.0.1";
.port = "8000";
}
## Abrufen
sub vcl_fetch {
## Entferne den X-Forwarded-For-Header, falls er existiert.
remove req.http.X-Forwarded-For;
## Füge die IP-Adresse des Clients als X-Forwarded-For hinzu. Dies ist die normale IP-Adresse des Benutzers.
set req.http.X-Forwarded-For = req.http.rlnclientipaddr;
## Zusätzliche Sicherheit, die "w00tw00t"-Angriffe sind ziemlich nervig, also lass uns das blockieren, bevor es unseren Webserver erreicht
if (req.url ~ "^/w00tw00t") {
error 403 "Nicht erlaubt";
}
## Inhalt liefern
return(deliver);
}
## Liefern
sub vcl_deliver {
## Wir werden einige von Varnish hinzugefügte Header verbergen. Wir wollen sicherstellen, dass die Leute nicht sehen, dass wir Varnish verwenden.
## Da wir (noch) nicht cachen, warum sollten wir den Leuten sagen, dass wir es verwenden?
remove resp.http.X-Varnish;
remove resp.http.Via;
remove resp.http.Age;
## Wir möchten die X-Powered-By-Header verbergen. Niemand muss wissen, dass wir PHP ausführen können und Version xyz davon haben.
remove resp.http.X-Powered-By;
}
Speichere die Datei. Alles klar, das war der Varnish-Teil. Starte es noch nicht.
Apache-Einstellungen ändern
OK, wir müssen Apache2 so konfigurieren, dass es auf localhost lauscht. Dafür sind ein paar kleine Änderungen erforderlich.
vim /etc/apache2/ports.confÄndere:
NameVirtualHost *:80
Listen 80In:
NameVirtualHost *:8000
Listen 127.0.0.1:8000Apache wird auf diesem Port lauschen. Du musst auch deine vhosts bearbeiten. Öffne deine vhost(s) und ersetze
mit
Bis jetzt so gut. Jetzt müssen wir ein zusätzliches Apache-Modul installieren, um sicherzustellen, dass die IP-Adresse des Benutzers korrekt ankommt. Da Varnish im Grunde mit Apache2 kommuniziert, würdest du 127.0.0.1 als Besucher-IP sehen.
apt-get install libapache2-mod-rpafDas RPAF (Reverse Proxy Add Forward)-Modul stellt sicher, dass die IP von 127.0.0.1 durch die IP ersetzt wird, die in X-Forwarded-For von Varnish gesetzt wurde.
Daemons neu starten
Starte Apache neu:
/etc/init.d/apache2 restartÜberprüfe, ob es an der richtigen IP/Port gebunden ist, indem du ausführst:
netstat -lp | grep apache2Wenn du siehst:
tcp 0 0 localhost:8000 *:* LISTEN 4586/apache2Das ist korrekt. Andernfalls hast du einen Fehler gemacht. Alles klar, jetzt müssen wir Varnish neu starten, damit es auf Port 80 lauscht.
/etc/init.d/varnish restartWir überprüfen dies erneut, indem wir ausführen:
netstat -lp | grep varnishDas Ergebnis wird sein:
tcp 0 0 *:www *:* LISTEN 4498/varnishd
tcp6 0 0 [::]:www [::]:* LISTEN 4498/varnishd(Ja, Varnish lauscht auch auf jeder IPv6-Adresse).
Also.. Jetzt haben wir Varnish vor Apache2 platziert. Wir können testen, ob die Seite immer noch funktioniert, indem wir sie einfach besuchen. Du wirst die Seite sehen, als ob nichts passiert wäre. Du kannst dies weiter testen, indem du Apache herunterfährst. Du wirst dann eine Varnish-Fehlerseite sehen.
Bonusfunktionen
Nun, du möchtest vielleicht den HTTP-Servernamen von “Apache” in etwas anderes ändern. Dies kann durch Bearbeiten deiner VCL-Datei, die sich in /etc/varnish befindet, erfolgen. Nach:
sub vcl_fetch {Füge hinzu:
## Entferne den http.Server-Header
unset obj.http.Server;
## Ändere den http.Server-Header in etwas anderes
set obj.http.Server = "Incognito";Offensichtlich kannst du es so aussehen lassen, wie du möchtest. DeineDomain.com zum Beispiel. Bitte beachte, dass alle Domains auf diesem Server denselben Servernamen verwenden.
Nun, das ist alles. Du hast jetzt einen Reverse-Proxy vor deinem Apache!
Mit ein wenig Feintuning kannst du es cachen oder loadbalancen.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.