Sådan installeres Varnish Cache 6 til Nginx på CentOS/RHEL 8


Varnish Cache (ofte benævnt Varnish) er en open source, kraftfuld og hurtig reverse-proxy HTTP-accelerator med moderne arkitektur og fleksibelt konfigurationssprog. At være en omvendt proxy betyder simpelthen, at det er software, som du kan distribuere foran din webserver (som er originalserveren eller backend) såsom Nginx, til at modtage klienters HTTP-anmodninger og videresende dem til originalserveren til behandling. Og det leverer svaret fra originalserveren til klienter.

Varnish fungerer som mellemmand mellem Nginx og klienter, men med nogle ydelsesfordele. Hovedformålet er at få dine applikationer til at indlæse hurtigere ved at arbejde som en cachemotor. Den modtager anmodninger fra klienter og videresender dem til backend en gang for at cache det ønskede indhold (gemme filer og fragmenter af filer i hukommelsen). Derefter serveres alle fremtidige anmodninger om nøjagtigt lignende indhold fra cachen.

Dette får dine webapplikationer til at indlæse hurtigere og forbedrer indirekte din webservers samlede ydeevne, fordi Varnish serverer indhold fra hukommelsen i stedet for Nginx-behandlingsfiler fra lagerdisken.

Bortset fra caching har Varnish også adskillige andre brugssager, herunder en HTTP-anmodningsrouter og load balancer, webapplikations firewall og mere.

Lakken konfigureres ved hjælp af det meget udvidelige indbyggede Varnish Configuration Language (VCL), som giver dig mulighed for at skrive politikker om, hvordan indgående anmodninger skal håndteres. Du kan bruge den til at oprette tilpassede løsninger, regler og moduler.

I denne artikel gennemgår vi trinene til installation af Nginx-webserveren og Varnish Cache 6 på en frisk CentOS 8- eller RHEL 8-server. RHEL 8-brugere skal sørge for, at de aktiverer redhat-abonnement.

For at konfigurere en komplet LEMP-stak i stedet for at installere Nginx-webserveren alene, skal du tjekke følgende guider.

  1. Sådan installeres LEMP-server på CentOS 8
  2. Sådan installeres LEMP-server på RHEL 8

Trin 1: Installer Nginx-webserver på CentOS/RHEL 8

1. CentOS/RHEL 8 leveres med den nyeste version af Nginx webserver-software, så vi installerer det fra standardregistret ved hjælp af følgende dnf-kommandoer.

# dnf update
# dnf install nginx

2. Når Nginx er installeret, skal du starte, aktivere og kontrollere status ved hjælp af følgende systemctl-kommandoer.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. Hvis du er lidt nysgerrig, kan du også kontrollere Nginx TCP-stikket, der som standard kører på port 80 ved hjælp af følgende ss-kommando.

# ss -tpln

4. Hvis du kører firewallen på systemet, skal du sørge for at opdatere firewallreglerne for at tillade anmodninger til en webserver.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload

Trin 2: Installation af Varnish Cache 6 på CentOS/RHEL 8

5. CentOS/RHEL 8 leverer som standard et Varnish Cache DNF-modul, der indeholder version 6.0 LTS (Long Term Support).

For at installere modulet skal du køre følgende kommando.

# dnf module install varnish

6. Når modulinstallationen er afsluttet, kan du bekræfte den version af Varnish, der er installeret på dit system.

# varnishd -V

7. Efter installation af Varnish Cache er den vigtigste eksekverbare kommando installeret under/usr/sbin/varnishd og lakkonfigurationsfiler placeret i/etc/lak /.

Filen /etc/varnish/default.vcl er den vigtigste lakkonfigurationsfil skrevet med VCL og/etc/lak/hemmelighed er lakens hemmelige fil.

8. Start derefter Varnish-tjenesten, aktiver den til automatisk start under systemstart og bekræft, at den er i gang.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish

Trin 3: Konfiguration af Nginx til at arbejde med Varnish Cache

9. I dette afsnit viser vi, hvordan du konfigurerer Varnish Cache til at køre foran Nginx. Som standard lytter Nginx på port 80, normalt er hver serverblok (eller virtuel vært) konfigureret til at lytte på denne port.

Se for eksempel på standard nginx-serverblokken, der er konfigureret i hovedkonfigurationsfilen (/etc/nginx/nginx.conf).

# vi /etc/nginx/nginx.conf

Se efter serverblokkeafsnittet som vist i følgende skærmbillede.

10. For at køre Varnish foran Nginx skal du ændre standard Nginx-porten fra 80 til 8080 (eller en hvilken som helst anden port efter eget valg).

Dette skal gøres i alle fremtidige serverblokkonfigurationsfiler (normalt oprettet under /etc/nginx/conf.d/) til websteder eller webapplikationer, som du vil betjene via Varnish.

For eksempel er serverblokken til vores testwebsted tecmint.lan /etc/nginx/conf.d/tecmint.lan.conf og har følgende konfiguration.

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

Vigtigt: Husk at deaktivere standardserverblokken ved at kommentere dens konfigurationsafsnit i /etc/nginx/nginx.conf-filen som vist i følgende skærmbillede. Dette giver dig mulighed for at køre andre websteder/applikationer på din server, ellers vil Nginx altid sende anmodninger til standardserverblokken.

11. Når konfigurationen er gennemført, skal du kontrollere konfigurationsfilen for eventuelle fejl og genstarte Nginx-tjenesten for at anvende de seneste ændringer.

# nginx -t
# systemctl restart nginx

12. For at modtage HTTP-anmodninger fra klienter skal vi derefter konfigurere Varnish til at køre på port 80. I modsætning til tidligere versioner af Varnish Cache, hvor denne ændring blev foretaget i Varnish-miljøfilen (som nu er udfaset), i version 6.0 og over.

Vi skal foretage den nødvendige ændring i Varnish-servicefilen. Kør følgende kommando for at åbne den relevante servicefil til redigering.

# systemctl edit --full  varnish

Find den følgende linje, og skift værdien for -a -kontakten, som specificerer lytteadressen og porten. Indstil porten til 80 som vist i det følgende skærmbillede.

Bemærk, hvis du ikke angiver en adresse, lytter varnishd på alle tilgængelige IPv4- og IPv6-grænseflader, der er aktive på serveren.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Gem ændringerne i filen, og afslut.

13. Dernæst skal du definere den backend-server, som Varnish besøger for at hente indhold fra. Dette gøres i Varnish-hovedkonfigurationsfilen.

# vi /etc/varnish/default.vcl 

Se efter standard backend-konfigurationsafsnittet, og skift strengen "standard" til server1 (eller et hvilket som helst navn efter eget valg til at repræsentere din oprindelsesserver). Indstil derefter porten til 8080 (eller Nginx-lytteporten, du definerede i din serverblok).

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

I denne vejledning kører vi Varnish og Nginx på samme server. Hvis din Nginx-webserver kører på en anden vært. For eksempel en anden server med adresse 10.42.0.247, og indstil derefter parameteren .host som vist.

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

Gem filen, og luk den.

14. Dernæst skal du genindlæse systemd manager-konfigurationen på grund af de seneste ændringer i Varnish-servicefilen, og genstart derefter Varnish-tjenesten for at anvende ændringerne som følger.

# systemctl daemon-reload
# systemctl restart varnish

15. Bekræft nu, at Nginx og Varnish lytter på de konfigurerede TCP-stik.

# ss -tpln

Trin 4: Test af Nginx Varnish Cache Setup

16. Kontroller derefter, at websiderne serveres via Varnish Cache som følger. Åbn en webbrowser, og naviger ved hjælp af serveren IP eller FDQN som vist i det følgende skærmbillede.

http://www.tecmin.lan
OR
http://10.42.0.144

17. Alternativt kan du bruge curl-kommandoen som vist. Brug din servers IP-adresse eller websteds FQDN eller brug 127.0.0.1 eller localhost, hvis du tester lokalt.

# curl -I http:///www.tecmint.lan

Nyttige Varnish Cache Administration Utilities

18. I dette sidste afsnit vil vi kort beskrive nogle af de nyttige hjælpeprogrammer, som Varnish Cache leveres med, som du kan bruge til at kontrollere lak, få adgang til hukommelseslogfiler og overordnede statistikker og mere.

varnishadm et værktøj til at kontrollere en kørende Varnish-forekomst. Det opretter en CLI-forbindelse til lak. For eksempel kan du bruge den til at liste konfigurerede backends som vist i følgende skærmbillede (læs man varnishadm for mere information).

# varnishadm
varnish> backend.list

Varnishlog-værktøjet giver adgang til anmodningsspecifikke data. Det giver information om specifikke klienter og anmodninger (læs mandslak for mere information).

# varnishlog

En lakstat, også kendt som lakstatistik, som giver dig et blik på Varnishs nuværende præstation ved at give adgang til hukommelsesstatistikker såsom cache-hits og -fejl, information om lagring, tråde oprettet, slettede objekter (læs man lakstat for mere information) .

# varnishstat 

Et varnishtop-værktøj læser de delte hukommelseslogfiler og præsenterer en løbende opdateret liste over de mest almindeligt forekommende logposter (læs mand lak for mere information).

# varnishtop 

En lakhistisk (lakhistorisk) hjælpeproces analyserer laklogfilerne og udsender et kontinuerligt opdateret histogram, der viser fordelingen af de sidste n anmodninger ved deres behandling (læs mandslak for mere information).

# varnishhist

Det er alt! I denne vejledning har vi vist, hvordan du installerer Varnish Cache og kører den foran Nginx HTTP-serveren for at fremskynde levering af webindhold i CentOS/RHEL 8.

Eventuelle tanker eller spørgsmål om denne guide kan deles ved hjælp af feedbackformularen nedenfor. For mere information, læs dokumentationen til Varnish Cache.

Den største ulempe ved Varnish Cache er manglen på native support til HTTPS. For at aktivere HTTPS på dit websted/din applikation skal du konfigurere en SSL/TLS-opsigelsesproxy til at arbejde sammen med Varnish Cache for at beskytte dit websted. I vores næste artikel viser vi, hvordan du aktiverer HTTPS til Varnish Cache ved hjælp af Hitch på CentOS/RHEL 8.