Varnish Cache è un acceleratore web open source e di recente sviluppo, dotato di alta performance e totalmente gratuito. E’ un proxy HTTP inverso veloce che utilizza il cache per incrementare le prestazioni del server web, in quanto memorizza i contenuti web nel memory server – in un cache. E’ configurato per essere utilizzato davanti ad un server d’origine come Apache (HTTPD).
Quando un client richiede un contenuto, Varnish accetta la richiesta HTTP, invia la richiesta al server d’origine, mette i risultati nel cache e risponde alla richiesta del client. La prossima volta che il client richiede lo stesso contenuto, Varnish lo fornirà direttamente dal cache. In questo modo, si riduce il tempo di risposta e il consumo di banda della rete per richieste future equivalenti.
Varnish può anche funzionare come un router di richieste HTTP, firewall applicativo web, load balancer e molto altro. E’ configurato usando la flessibile Varnish Configuration Language (VCL), estendibile tramite Varnish Modules (conosciuti anche come VMODs), che supporta Edge Side Includes (ESI), la compressione e decompressione Gzip, e molto altro ancora.
In questo articolo, imparerete come installare il server web Apache HTTPD e Varnish Cache 6 su un server CentOS/RHEL 8 inizialmente vuoto, inclusa la configurazione di Varnish per funzionare davanti al server HTTPD.
Prerequisiti:
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
Passaggio 1: Installazione del server Web Apache su CentOS/RHEL 8
1. Inizia aggiornando tutti i pacchetti software installati sul sistema come segue utilizzando il comando DNF.
# dnf update
2. Successivamente, esegui il seguente comando per installare il server web Apache HTTP dal repository AppStream.
# dnf install httpd
3. Non appena l’installazione è completata, avvia il servizio httpd, abilitandolo all’avvio automatico durante il boot del sistema, e controlla lo stato per confermare che sia attivo ed in esecuzione, utilizzando il comando systemctl.
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

4. Per impostazione predefinita, CentOS/RHEL 8 include un firewall completamente bloccato (esegui firewall-cmd –state per confermare). È necessario aprire l’accesso al servizio HTTP nel firewall per consentire agli utenti di accedere a siti web o applicazioni in esecuzione su HTTP, e ricaricare le impostazioni di firewalld per applicare le nuove modifiche.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
Passaggio 2: Installazione di Varnish Cache 6.4 su CentOS/RHEL 8
5. Ora che il server web Apache è in esecuzione, puoi procedere con l’installazione di Varnish Cache sul sistema utilizzando il seguente comando.
# dnf module install varnish

6. Dopo un’installazione riuscita, puoi verificare la versione di Varnish installata sul tuo sistema.
# varnishd -V

7. Successivamente, l’eseguibile principale viene installato come /usr/sbin/varnishd. Inoltre, i file di configurazione di Varnish sono memorizzati nella directory /etc/varnish, dove:
- /etc/varnish/default.vcl – è il file di configurazione principale di Varnish scritto utilizzando VCL.
- /etc/varnish/secret – è il file segreto di Varnish.
8. Ora avvia il servizio di Varnish, per ora, abilita l’avvio automatico durante il boot di sistema in caso di riavvio del server e controlla il suo stato per assicurarti che sia attivo e in esecuzione come segue.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

Passo 3: Configurare Apache per Funzionare con la Cache di Varnish
9. Ora è il momento di configurare Varnish Cache per funzionare davanti al servizio Apache. Per impostazione predefinita, il server Apache è configurato per ascoltare sulla porta 80, questo è definito nel file di configurazione principale /etc/httpd/conf/httpd.conf.
Aprilo per modificarlo utilizzando il tuo editor di testo preferito.
# vi /etc/httpd/conf/httpd.conf
Cerca il parametro Listen. Per eseguire Varnish davanti al server Apache, dovresti cambiare la porta predefinita 80 in 8080 (o qualsiasi altra porta a tua scelta) come mostrato nella seguente schermata.
Questa porta verrà aggiunta come porta del server di backend nel file di configurazione di Varnish in seguito.

Inoltre, la configurazione dell’host virtuale per ogni sito web/applicazione che verrà servito tramite Varnish dovrebbe essere configurata per ascoltare la porta sopra indicata. Ecco la configurazione per il nostro sito di test (/etc/httpd/conf.d/tecmint.lan.conf).
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.lan # Other directives here </VirtualHost>

Importante: Per evitare che la pagina di test predefinita del server Apache HTTP venga mai utilizzata, commentare tutte le righe nel file /etc/httpd/conf.d/welcome.conf o semplicemente eliminarlo.
# rm /etc/httpd/conf.d/welcome.conf
10. Successivamente, verificare la sintassi della configurazione di httpd per eventuali errori. Se è tutto a posto, riavviare il servizio httpd per applicare le nuove modifiche.
# httpd -t # systemctl restart httpd

Configurazione di Varnish per Systemd
11. Per distribuire Varnish davanti a HTTPD, è sufficiente configurarlo per ascoltare le richieste dei client sulla porta HTTP predefinita 80 come spiegato di seguito.
Si noti che in Varnish Cache 6.0 e versioni successive, è necessario impostare la porta su cui il server Varnish ascolta nel file di servizio Varnish per systemd. Per prima cosa, aprirlo per modificarlo.
# systemctl edit --full varnish
Cercare la riga ExecStart, quindi modificare il valore dello switch -a
(che specifica l’ascolto di Varnish sull’indirizzo e sulla porta) da :6081
a :80
come indicato nella seguente schermata.
In modo importante, se non si specifica 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

Salvare le modifiche nel file ed uscire.
Configurazione dei server backend di Varnish utilizzando VCL
12. Ora è necessario configurare il server di origine, noto nella terminologia di Varnish come un backend. È il server che comprende HTTP, con cui Varnish comunica per recuperare i contenuti – httpd in questo caso. È configurato nel file di configurazione principale /etc/varnish/default.vcl.
# vi /etc/varnish/default.vcl
Esiste una sezione di configurazione predefinita del backend chiamata default. È possibile cambiare “default” in server1 (o qualsiasi altro nome a scelta per rispettare gli standard dell’ambiente). Per impostazione predefinita, il parametro host punta a localhost, assumendo che il server di backend sia in esecuzione in locale.
Quindi impostare la porta su 8080 (la porta definita nel file di configurazione dell’host virtuale Apache) come mostrato nella schermata.
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

Se il tuo server backend è in esecuzione su un host diverso, ad esempio, un altro server con l’indirizzo 10.42.1.10, allora il parametro host dovrebbe puntare a questo indirizzo IP.
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
Salvare il file e chiuderlo.
13. Dopo aver apportato tutte le modifiche necessarie riguardanti Varnish, ricaricare la configurazione del gestore di systemd per riflettere le nuove modifiche nel file di servizio di Varnish e riavviare anche il servizio di Varnish per applicare le modifiche complessive.
# systemctl daemon-reload # systemctl restart varnish
14. A questo punto, Varnish e Apache dovrebbero essere in ascolto sulla porta 80 e 8080 rispettivamente. Puoi confermare questo utilizzando il comando socket statistics.
# ss -tpln

Step 4: Testing Varnish Cache and Apache Setup
14. Per testare il setup Varnish Cache-HTTPD, apri un browser web e naviga usando l’IP o l’FQDN del server come mostrato nella screenshot seguente.
http://10.42.0.144 OR http://www.tecmin.lan
Poi verifica se le pagine web vengono servite via Varnish Cache come segue. Controlla le HTTP headers facendo clic destro sulla pagina web visualizzata, seleziona Inspect per aprire gli strumenti del developer, quindi clicca sulla scheda Network e ricarica la pagina. Quindi seleziona una richiesta per visualizzare le intestazioni HTTP per confermare questo come mostrato nella screenshot seguente.

Alternativamente, puoi eseguire il comando curl seguente per verificarlo.
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

Utilizzo dei programmi utility di Varnish Cache
15. Chiudiamo questo guide guardando alcuni dei programmi utility che la distribuzione di Varnish Cache include. Questi includono utility per l’amministrazione del cache di Varnish, per visualizzare i record di log dettagliati e per visualizzare le statistiche di performance di Varnish, come descritto qui sotto.
varnishadm
Il primo è varnishadm che viene utilizzato per amministrare un’istanza in esecuzione di Varnish. Stabilisce una connessione dell’interfaccia della riga di comando a varnishd. Può influenzare un’istanza in esecuzione di Varnish avviando e arrestando varnishd, modificando i parametri di configurazione, ricaricando il VCL, elencando i backend e altro ancora.
# varnishadm > backend.list

Per ulteriori informazioni, leggere il man varnishadm.
varnishlog
Il programma successivo è varnishlog che viene utilizzato per accedere ai dati specifici della richiesta (ovvero informazioni su clienti e richieste specifici). Fornisce grandi quantità di informazioni, quindi è generalmente necessario filtrarle.
# varnishlog

Per ulteriori informazioni, leggere il man varnishlog.
varnishstat
Abbiamo anche varnishstat (statistiche di Varnish) che viene utilizzato per accedere alle statistiche generali come il numero totale di richieste, il numero di oggetti e altro ancora.
# varnishstat

Per ulteriori informazioni, leggere il man varnishstat.
varnishtop
Poi abbiamo varnishtop che è un’utilità che legge il log di Varnish e presenta un elenco continuamente aggiornato delle voci di log più comuni.
# varnishtop

Per ulteriori informazioni, leggere il man varnishtop.
varnishhist
Un’altra utilità utile è varnishhist (storico Varnish), l’utilità che legge i log di Varnish e presenta un istogramma aggiornato continuamente che mostra la distribuzione delle ultime N richieste in base al loro processamento.
# varnishhist

Per ulteriore informazione, leggi il man varnishhist.
Ecco qui! Hai avviato con successo Varnish Cache per accelerare il contenuto delle tue applicazioni web servite utilizzando il Server Apache HTTP su CentOS/RHEL 8.
Se hai domande su questo argomento o sei disponibile a condividere pensieri, usa il modulo di feedback sottostante. Controlla la documentazione di Varnish Cache 6.0 per maggiori informazioni.
Se vuoi abilitare HTTPS sul tuo sito, leggi il prossimo articolo, che mostrerà come abilitare SSL/TLS per Varnish Cache usando Hitch su CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/