Så installerar du Varnish för WordPress

Vad är Varnish Cache?

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

Inledning

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.

Installation

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

Konfiguration

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:

  • HTTP-metoder andra än GET och HEAD.
  • Användare inloggade med HTTP Authorization.
  • Om det skickats med Kakor i förfrågan, eller i svaret.

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.

Hur ser man om innehållet blir cachat?

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.

Var kan jag hitta mer information?

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

Behöver du hjälp med Varnish?

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

Hittar du inte det du söker?

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.

Skicka e-post Ring 0200-23 88 00