Varnish är en front-end cache, eller som det även kallas; "web application accelerator". Mjukvaran fungerar som en reverse proxy och cachar innehåll mellan användaren och webbservern för att snabba upp åtkomsten till din webbplats, särskilt under perioder med hög trafik.
I den här guiden går vi igenom hur du installerar Varnish, optimerad för WordPress, med Debian 8 som operativsystem
En webbplats skapad med WordPress kan fungera bra att cacha om innehållet inte behöver uppdateras “live” utan kan fördröjas 2–5 minuter innan besökaren ser det nya innehållet. På så vis behöver inte sidan genereras om för varje sidladdning.
I det här exemplet går vi igenom en standardinstallation av Varnish installerad på en server med Debian 8 (tänk på att Varnish inte måste köra på samma server som webbservern). Standardkonfigurationen kommer att cacha allt innehåll i 120 sekunder eller så länge som din Cache-Control-header tillåter.
Med en standard Debian 8-installation finns Varnish med i pakethanteraren (apt) och installeras på följande sätt:
sudo apt-get install varnish
Varnish lyssnar som standard på port 6081 men för att kunna användas som cache för webbsidor vill vi ändra detta så att den lyssnar på port 80. Det kan åtgärdas genom att skapa en ny service i systemd. Tänk på att kontrollera att ingen annan webbserver kör på port 80 innan du gör detta.
cp /lib/systemd/system/varnish.service /etc/systemd/system/
vim /etc/systemd/system/varnish.service
Ändra sedan följande rad:
ExecStart=/usr/sbin/varnishd -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Så den ser ut såhär:
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Det är även i denna filen du kan öka mängden av RAM som Varnish får använda för att hålla sin cache. För att ändra det så ändra bara -s malloc,256m
till -s malloc,1024m
för att höja värdet till 1024 MB.
systemctl daemon-reload
service varnish restart
Varnish har ett eget konfigurationsspråk som kallas VCL (Varnish Configuration Language). Som standard följer det med en tom konfiguration där man kan ställa in vilken backend-server som Varnish ska cacha.
Om du inte sätter upp några cache-regler så kommer Varnish att gå på sina inbyggda regler som cachar allt utom:
Det som cachas kommer att följa Cache-Control-headern i HTTP-svaret från applikationen. Om det inte finns någon satt så kommer Varnish använda en Time to Live (TTL) på 120 sekunder.
Standardkonfigurationen som följer med Debian 8 ser ut såhär:
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
# Happens before we check if we have this in cache already.
#
# Typically you clean up the request here, removing cookies you don't need,
# rewriting the request, etc.
}
sub vcl_backend_response {
# Happens after we have read the response headers from the backend.
#
# Here you clean the response headers, removing silly Set-Cookie headers
# and other mistakes your backend does.
}
sub vcl_deliver {
# Happens when we have all the pieces we need, and are about to send the
# response to the client.
#
# You can do accounting or modifying the final object here.
}
För att Varnish ska ansluta korrekt mot ditt backend behöver du ändra IP och portnummer i konfigurationen.
Sättet som Varnish väljer om en förfrågan finns i cachen eller inte är med hjälp en hash. Denna kan man själv styra med hjälp av funktionen vcl_hash
. Standardfunktionen är att basera hashen på URL, Hostname eller serverns IP-adress. Notera att detta sker efter man har bestämt att något ska omfattas av cachen.
Detta gör att om du inte är inloggad i WordPress och inte har några plugins som använder kakor, så kommer Varnish med standardinställningar erbjuda en cache på 120 sekunder per sida för alla besökare.
Varnish skickar med en HTTP header som heter X-Varnish som avslöjar att frågan gått genom Varnish och innehåller ID för det cachade objektet. Dessutom sätts en Age-header som berättar hur gammalt cache-objektet är.
Officiell webbplats för Varnish HTTP Cache: https://varnish-cache.org
Användarguide för VCL: https://varnish-cache.org/docs/trunk/users-guide/vcl.html
Med vår tjänst Systemförvaltning kan vi hjälpa dig att att sätta upp Varnish för bland annat WordPress. Läs mer om Varnish och systemförvaltning
Kontakta oss gärna för mer information. Vi hjälper dig att komma fram till den bästa lösningen för dina behov.