Come installare Varnish Cache 6 per Nginx su CentOS/RHEL 8

Varnish Cache (comunemente indicato come Varnish) è un acceleratore HTTP reverse-proxy open-source, potente e veloce con un’architettura moderna e un linguaggio di configurazione flessibile. Essere un reverse proxy significa semplicemente che è un software che puoi implementare davanti al tuo server web (che è il server di origine o backend) come Nginx, per ricevere le richieste HTTP dei client e inoltrarle al server di origine per l’elaborazione. E invia la risposta dal server di origine ai client.

Varnish funge da intermediario tra Nginx e clienti ma con alcuni vantaggi in termini di prestazioni. Il suo scopo principale è quello di rendere più veloci le tue applicazioni, agendo come motore di caching. Riceve le richieste dai client e le inoltra al backend una volta per memorizzare il contenuto richiesto (archivia file e frammenti di file in memoria). Successivamente, tutte le richieste future per contenuti esattamente simili saranno servite dalla cache.

Questo fa sì che le tue applicazioni web si carichino più velocemente e migliora indirettamente le prestazioni complessive del tuo server web perché Varnish servirà i contenuti dalla memoria anziché Nginx elaborare i file dal disco di archiviazione.

Oltre al caching, Varnish ha anche diversi altri casi d’uso tra cui un router di richieste HTTP, un bilanciamento del carico, un firewall per applicazioni web e altro ancora.

Il vernice è configurato utilizzando l’estremamente estensibile linguaggio di configurazione linguaggio di configurazione Varnish (VCL) che consente di scrivere direttive su come gestire le richieste in arrivo. È possibile utilizzarlo per creare soluzioni personalizzate, regole e moduli.

In questo articolo, passeremo attraverso i passaggi per installare il server web Nginx e Varnish Cache 6 su un server CentOS 8 o RHEL 8 appena installato. Gli utenti di RHEL 8 devono assicurarsi di attivare l’abbonamento redhat.

Per configurare uno stack LEMP completo anziché installare solo il server web Nginx, consultare le seguenti guide.

  1. Come Installare un Server LEMP su CentOS 8
  2. Come Installare un Server LEMP su RHEL 8

Passaggio 1: Installare il Server Web Nginx su CentOS/RHEL 8

1.Il sistema CentOS/RHEL 8 include l’ultima versione del software del server web Nginx, quindi lo installeremo dal repository predefinito utilizzando i seguenti comandi dnf.

# dnf update
# dnf install nginx

2.Dopo aver installato Nginx, è necessario avviarlo, abilitarlo e verificare lo stato utilizzando i seguenti comandi systemctl.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Verify Nginx Service Status

3.Se sei un po’ curioso, puoi anche controllare il socket TCP di Nginx, che di default è in esecuzione sulla porta 80, utilizzando il seguente comando ss.

# ss -tpln
Check Nginx TCP Port

4.Se stai eseguendo il firewall sul sistema, assicurati di aggiornare le regole del firewall per consentire le richieste a un server web.

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

Passaggio 2: Installazione di Varnish Cache 6 su CentOS/RHEL 8

5.Il sistema CentOS/RHEL 8 fornisce di default un modulo Varnish Cache DNF che contiene la versione 6.0 LTS (Supporto a Lungo Termine).

Per installare il modulo, esegui il seguente comando.

# dnf module install varnish
Install Varnish Cache in CentOS 8

6. Una volta completata l’installazione del modulo, puoi confermare la versione di Varnish installata sul tuo sistema.

# varnishd -V
Check Varnish Version

7. Dopo aver installato Varnish Cache, il comando eseguibile principale installato sotto /usr/sbin/varnishd e i file di configurazione di varnish si trovano in /etc/varnish/.

Il file /etc/varnish/default.vcl è il file di configurazione principale di varnish scritto utilizzando VCL e /etc/varnish/secret è il file segreto di varnish.

8. Successivamente, avvia il servizio Varnish, abilita l’avvio automatico durante il boot del sistema e conferma che sia attivo e in esecuzione.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Verify Varnish Cache on CentOS 8

Passaggio 3: Configurare Nginx per lavorare con Varnish Cache

9. In questa sezione, mostreremo come configurare Varnish Cache per funzionare davanti a Nginx. Per impostazione predefinita, Nginx ascolta sulla porta 80, normalmente ogni blocco del server (o host virtuale) è configurato per ascoltare su questa porta.

Ad esempio, dai un’occhiata al blocco server nginx predefinito configurato nel file di configurazione principale (/etc/nginx/nginx.conf).

# vi /etc/nginx/nginx.conf

Cerca la sezione del blocco server come mostrato nella seguente schermata.

Nginx Server Block Configuration

10. Per eseguire Varnish di fronte a Nginx, è necessario modificare la porta predefinita di Nginx da 80 a 8080 (o qualsiasi altra porta a tua scelta).

Questo dovrebbe essere fatto in tutti i futuri file di configurazione del blocco del server (di solito creati in /etc/nginx/conf.d/) per siti o applicazioni web che si desidera servire tramite Varnish.

Ad esempio, il blocco del server per il nostro sito di test tecmint.lan si trova in /etc/nginx/conf.d/tecmint.lan.conf e ha la seguente configurazione.

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 {
        }
}
Nginx Server Block Configuration

Importante: Ricordati di disabilitare il blocco del server predefinito commentando la sezione di configurazione nel file /etc/nginx/nginx.conf come mostrato nella seguente schermata. Questo ti consente di iniziare ad eseguire altri siti/applicazioni sul tuo server, altrimenti, Nginx indirizzerà sempre le richieste al blocco del server predefinito.

Disable Nginx Server Block

11. Una volta completata la configurazione, controlla il file di configurazione per eventuali errori e riavvia il servizio Nginx per applicare le modifiche recenti.

# nginx -t
# systemctl restart nginx
Check Nginx Configuration Syntax

12. Successivamente, per ricevere le richieste HTTP dai client, è necessario configurare Varnish per funzionare sulla porta 80. A differenza delle versioni precedenti di Varnish Cache dove questa modifica veniva apportata nel file di ambiente di Varnish (che ora è deprecato), nella versione 6.0 e successiva.

Dobbiamo apportare la modifica necessaria nel file di servizio di Varnish. Esegui il seguente comando per aprire il file di servizio appropriato per la modifica.

# systemctl edit --full  varnish

Trova la seguente riga e cambia il valore dello switch -a, che specifica l’indirizzo e la porta di ascolto. Imposta la porta su 80 come mostrato nello screenshot seguente.

Nota che se non specifici un indirizzo, varnishd ascolterà su tutte le interfacce IPv4 e IPv6 disponibili attive sul server.

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

Salva le modifiche nel file ed esci.

13. Successivamente, devi definire il server backend che Varnish visiterà per recuperare i contenuti. Ciò viene fatto nel file di configurazione principale di Varnish.

# vi /etc/varnish/default.vcl 

Cerca la sezione di configurazione del server backend predefinito e cambia la stringa “default” in server1 (o qualsiasi altro nome che rappresenti il tuo server di origine). Quindi imposta la porta su 8080 (o la porta di ascolto di Nginx che hai definito nel blocco del server).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}
Set Default Varnish Backend Servers

Per questa guida, stiamo eseguendo Varnish e Nginx sullo stesso server. Se il tuo server web Nginx è in esecuzione su un host diverso. Per esempio, un altro server con indirizzo 10.42.0.247, allora imposta il parametro .host come mostrato.

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

Salva il file e chiudilo.

14. Successivamente, devi ricaricare la configurazione del gestore systemd a causa delle modifiche recenti nel file di servizio di Varnish, quindi riavvia il servizio Varnish per applicare le modifiche come segue.

# systemctl daemon-reload
# systemctl restart varnish

15. Ora conferma che Nginx e Varnish stiano ascoltando sulle prese TCP configurate.

# ss -tpln
Confirm Nginx and Varnish Ports

Passaggio 4: Testing Nginx Varnish Cache Setup

16. Successivamente, verificare che le pagine web vengano servite tramite Varnish Cache come segue. Aprire un browser web e navigare utilizzando l’indirizzo IP del server o l’FQDN come mostrato nella schermata seguente.

http://www.tecmin.lan
OR
http://10.42.0.144
Verify Nginx Pages Served Via Varnish Cache

17. In alternativa, utilizzare il comando curl come mostrato. Utilizzare l’indirizzo IP del server o l’FQDN del sito web o utilizzare 127.0.0.1 o localhost se si sta testando in locale.

# curl -I http:///www.tecmint.lan
Verify Nginx Varnish Cache Page Using Curl

Utilità di amministrazione di Varnish Cache

18. In questa sezione finale, descriveremo brevemente alcuni dei programmi di utilità utili forniti da Varnish Cache, che è possibile utilizzare per controllare varnishd, accedere ai log in memoria e alle statistiche generali e altro ancora.

varnishadm

varnishadm un’utilità per controllare un’istanza Varnish in esecuzione. Stabilisce una connessione CLI a varnishd. Ad esempio, è possibile utilizzarlo per elencare i back-end configurati come mostrato nella schermata seguente (leggi man varnishadm per ulteriori informazioni).

# varnishadm
varnish> backend.list
List Configured Backends

varnishlog

L’utilità varnishlog fornisce accesso ai dati specifici della richiesta. Offre informazioni su clienti e richieste specifici (leggi man varnishlog per ulteriori informazioni).

# varnishlog
Check Info About Clients and Requests

varnishstat

A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).

# varnishstat 
Show Varnish Statistics

varnishtop

A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).

# varnishtop 
View Shared Memory logs

varnishhist

A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).

# varnishhist
Show Requests Histogram

Questo è tutto! In questa guida, abbiamo mostrato come installare Varnish Cache ed eseguirlo davanti al server Nginx HTTP per accelerare la distribuzione dei contenuti web in CentOS/RHEL 8.

Qualsiasi pensiero o domanda su questa guida può essere condiviso utilizzando il modulo di feedback qui sotto. Per ulteriori informazioni, leggere la documentazione di Varnish Cache.

Il principale svantaggio di Varnish Cache è la mancanza di supporto nativo per HTTPS. Per abilitare HTTPS sul tuo sito/applicazione web, è necessario configurare un proxy di terminazione SSL/TLS per lavorare in congiunzione con Varnish Cache per proteggere il tuo sito. Nel nostro prossimo articolo, mostreremo come abilitare HTTPS per Varnish Cache usando Hitch su CentOS/RHEL 8.

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/