Varnish Cache è un acceleratore HTTP proxy inverso gratuito e open source per siti Web e API. Può essere installato come proxy inverso davanti a qualsiasi server Web in esecuzione su HTTP. Si trova tra il server web e il browser e salva in memoria pagine web, cookie e altri dati. Questa cache verrà utilizzata per soddisfare tutte le future richieste di contenuti esattamente simili. Ciò aumenterà il carico dell'applicazione Web e migliorerà le prestazioni del server Web di oltre 300 volte.
In questo tutorial, imposteremo il server Nginx come server back-end e lo configureremo per l'ascolto sulla porta 8080, quindi configureremo la cache di Varnish per l'ascolto sulla porta HTTP predefinita 80.
Prerequisiti
- Un server che esegue CentOS 8.
- Una password di root è configurata sul server.
Installa e configura il server Web Nginx
Innanzitutto, dovrai installare il server web Nginx nel tuo sistema. Puoi installarlo con il seguente comando:
dnf install nginx -y
Una volta installato, avvia il servizio Nginx e abilitalo all'avvio al riavvio del sistema con il seguente comando:
systemctl start nginx
systemctl enable nginx
Per impostazione predefinita, Nginx è in ascolto sulla porta 80. Quindi dovrai configurare Nginx per l'ascolto sulla porta 80. Puoi configurarlo modificando il file di configurazione predefinito di Nginx:
nano /etc/nginx/nginx.conf
Trova le seguenti righe:
listen 80 default_server; listen [::]:80 default_server;
E sostituiscili con le seguenti righe:
listen 8080 default_server; listen [::]:8080 default_server;
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio Nginx per applicare le modifiche:
systemctl restart nginx
A questo punto, il web server Nginx è installato ed è in ascolto sulla porta 8080. Puoi verificarlo usando il seguente comando:
netstat -tpln | grep 8080
Dovresti ottenere il seguente output:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Installa Varnish Cache
Per impostazione predefinita, il pacchetto Varnish è disponibile nel repository predefinito di CentOS 8. Puoi installarlo semplicemente eseguendo il seguente comando:
dnf module install varnish
Una volta installato, avvia il servizio Varnish con il seguente comando:
systemctl start varnish
Puoi anche verificare la versione installata della cache di Varnish con il seguente comando:
varnishd -V
Dovresti vedere il seguente output:
varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91) Copyright (c) 2006 Verdens Gang AS Copyright (c) 2006-2018 Varnish Software AS
Configura vernice per Nginx
Successivamente, dovrai configurare Paint per l'esecuzione sulla porta 80 per ricevere richieste HTTP dai client. Puoi configurarlo modificando il file di configurazione predefinito di Varnish:
systemctl edit --full varnish
Trova la riga seguente:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
E sostituiscilo con la seguente riga:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Salva e chiudi il file quando hai finito.
Successivamente, dovrai definire il server back-end per Varnish. Puoi farlo modificando il file di configurazione principale di Varnish /etc/varnish/default.vcl:
nano /etc/varnish/default.vcl
Modifica le seguenti righe:
backend myserver { .host = "127.0.0.1"; .port = "8080"; }
Salva e chiudi il file quando hai finito. Quindi, ricarica il demone systemd con il seguente comando:
systemctl daemon-reload
Quindi, riavvia il servizio Varnish e abilitalo all'avvio al riavvio del sistema con il seguente comando:
systemctl restart varnish
systemcl enable varnish
Puoi anche verificare lo stato della vernice con il seguente comando:
systemctl status varnish
Dovresti ottenere il seguente output:
? varnish.service - Varnish Cache, a high-performance HTTP accelerator Loaded: loaded (/etc/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-08-29 09:36:58 EDT; 12s ago Process: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 30424 (varnishd) Tasks: 217 Memory: 91.8M CGroup: /system.slice/varnish.service ??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Aug 29 09:36:57 centos8 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30424]: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30424]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) said Child starts Aug 29 09:36:58 centos8 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
Ora puoi verificare la porta di ascolto di Nginx e Varnish con il seguente comando:
netstat -tpln | grep 80
Dovresti vedere il seguente output:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30424/varnishd tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::80 :::* LISTEN 30424/varnishd tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Configura SELinux e Firewall
Per impostazione predefinita, SELinux è abilitato in CentOS 8. Quindi dovrai configurare SELinux per Varnish. Puoi configurarlo con il seguente comando:
setsebool -P httpd_can_network_connect 1
Successivamente, dovrai consentire la porta 80 tramite firewalld. Puoi farlo con il seguente comando:
firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload
Una volta terminato, puoi procedere al passaggio successivo.
Testa cache vernice
A questo punto, la cache di Varnish è installata e configurata con il server web Nginx. Ora è il momento di verificare se la cache di Varnish funziona o meno.
Puoi testarlo usando il comando curl come mostrato di seguito:
curl -I http://localhost
Dovresti vedere il seguente output:
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Sat, 29 Aug 2020 13:53:44 GMT Content-Type: text/html; charset=UTF-8 X-Powered-By: PHP/7.2.24 X-Varnish: 32800 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
Conclusione
Congratulazioni! hai installato correttamente Varnish Cache con Nginx su CentOS 8. Spero che tu possa anche configurare facilmente la cache Varnish con il server web Apache. Sentiti libero di chiedermi se hai domande.