Varnish Cache è un potente proxy HTTP inverso utilizzato per velocizzare le applicazioni Web disponibile come software Open-Source. Varnish memorizza nella cache sia il contenuto statico che quello dinamico. Gestisce tutte le richieste in entrata prima che arrivino sul back-end del tuo server web. Si trova tra un browser Web e un server Web Apache o Nginx. La cache Varnish memorizza tutte le richieste di pagina in entrata in memoria in modo che i server Web non debbano creare la stessa pagina Web più e più volte.
In questo post, ti mostreremo come installare la cache Varnish con Apache e Nginx su CentOS 8.
Prerequisiti
- Un server che esegue CentOS 8.
- Sul tuo server è configurata una password di root.
Per iniziare
Prima di iniziare, si consiglia di aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornarli eseguendo il seguente comando:
dnf update -y
Una volta aggiornati tutti i pacchetti, puoi procedere al passaggio successivo.
Installa vernice
Per impostazione predefinita, il pacchetto Varnish è incluso nel repository predefinito di CentOS 8. Puoi installarlo eseguendo il seguente comando:
dnf install varnish -y
Dopo aver installato Varnish, modifica il file di configurazione predefinito di Varnish e definisci l'indirizzo supportato dal server web Nginx o Apache.
nano /etc/varnish/default.vcl
Modifica le seguenti righe:
backend default { .host = "127.0.0.1"; .port = "8080"; }
Salva e chiudi il file quando hai finito.
Configura vernice
Per impostazione predefinita, Varnish è in ascolto sulla porta 6081. Quindi dovrai configurare Varnish per l'ascolto sulla porta 80. Puoi configurarlo modificando il file paint.service:
nano /lib/systemd/system/varnish.service
Trova la seguente riga:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
Sostituito con la seguente riga:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Salva e chiudi il file, quindi ricarica il demone systemd per applicare le modifiche:
systemctl daemon-reload
Quindi, avvia il servizio Varnish e abilitalo all'avvio al riavvio del sistema con il seguente comando:
systemctl start varnish
systemctl enable varnish
Puoi anche controllare 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 (/usr/lib/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-03-12 04:17:32 EST; 4s ago Process: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 6392 (varnishd) Tasks: 217 Memory: 99.5M CGroup: /system.slice/varnish.service ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Mar 12 04:17:32 masternode systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Mar 12 04:17:32 masternode varnishd[6391]: Debug: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Mar 12 04:17:32 masternode varnishd[6391]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Mar 12 04:17:32 masternode varnishd[6392]: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Mar 12 04:17:32 masternode varnishd[6392]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Mar 12 04:17:32 masternode varnishd[6391]: Debug: Child (6402) Started Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) Started Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) said Child starts Mar 12 04:17:32 masternode systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
A questo punto, Varnish è avviato e in ascolto sulla porta 80. Puoi verificarlo con il seguente comando:
ss -antpl | grep varnishd
Dovresti ottenere il seguente output:
LISTEN 0 10 127.0.0.1:34977 0.0.0.0:* users:(("varnishd",pid=1532,fd=11)) LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6)) LISTEN 0 128 [::]:80 [::]:* users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7)) LISTEN 0 10 [::1]:34909 [::]:* users:(("varnishd",pid=1532,fd=10))
A questo punto, Varnish è installato e configurato. Ora puoi procedere al passaggio successivo.
Installa e configura Nginx per funzionare con Varnish
Innanzitutto, dovrai installare il pacchetto Nginx sul tuo server. Puoi installarlo con il seguente comando:
dnf install nginx -y
Una volta installato, dovrai cambiare la porta di ascolto di Nginx da 80 a 8080. Puoi farlo modificando il file di configurazione predefinito di Nginx:
nano /etc/nginx/nginx.conf
Modifica le seguenti righe:
listen 8080 default_server; listen [::]:8080 default_server;
Salva e chiudi il file, quindi verifica Nginx per eventuali errori di sintassi utilizzando il seguente comando:
nginx -t
Dovresti ottenere il seguente output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Quindi, avvia il servizio Nginx e abilitalo per l'avvio al riavvio del sistema:
systemctl start nginx
systemctl enable nginx
Puoi anche verificare la porta di ascolto Nginx con il seguente comando:
ss -antpl | grep 8080
Dovresti ottenere il seguente output:
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8)) LISTEN 0 128 [::]:8080 [::]:* users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))
A questo punto, la cache di Varnish è installata e configurata per inoltrare tutte le richieste in arrivo sulla porta 80 al server web Nginx che è in ascolto sulla porta 8080.
Puoi verificare se la cache di Varnish funziona o meno con il seguente comando:
curl -I http://localhost
Dovresti ottenere il seguente output:
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Fri, 12 Mar 2021 09:18:32 GMT Content-Type: text/html Content-Length: 4057 Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT ETag: "5d9bab28-fd9" X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
Installa e configura Apache per lavorare con Varnish
Innanzitutto, dovrai installare il pacchetto del server web Apache sul tuo sistema. Puoi installarlo con il seguente comando:
dnf install httpd -y
Dopo aver installato Apache, modifica il file di configurazione predefinito di Apache e cambia la porta di ascolto da 80 a 8080.
nano /etc/httpd/conf/httpd.conf
Modifica la seguente riga:
Listen 8080
Salva e chiudi il file, quindi avvia il servizio Apache e abilitalo all'avvio al riavvio del sistema con il seguente comando:
systemctl start httpd
systemctl enable httpd
Puoi anche verificare la porta di ascolto di Apache con il seguente comando:
ss -antpl | grep httpd
Dovresti ottenere il seguente output:
LISTEN 0 128 *:8080 *:* users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))
A questo punto, la cache Varnish è installata e configurata per inoltrare tutte le richieste in arrivo sulla porta 80 al server Web Apache che è in ascolto sulla porta 8080.
Puoi verificare se la cache di Varnish funziona o meno con il seguente comando:
curl -I http://localhost
Dovresti ottenere il seguente output:
Date: Fri, 12 Mar 2021 09:21:14 GMT Server: Apache/2.4.37 (centos) Content-Location: index.html.zh-CN Vary: negotiate,accept-language TCN: choice Last-Modified: Fri, 14 Jun 2019 03:37:43 GMT ETag: "fa6-58b405e7d6fc0;5bd5365602e05" Accept-Ranges: bytes Content-Length: 4006 Content-Type: text/html; charset=UTF-8 Content-Language: zh-cn X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/6.0) Connection: keep-alive
Lavorare con la riga di comando di Varnish
Varnish viene fornito con diverse utili utilità che consentono di monitorare e controllare Varnish.
paintadm è un'utilità della riga di comando utilizzata per elencare i backend configurati.
varnishadm
Dovresti vedere il seguente output:
200 ----------------------------- Varnish Cache CLI 1.0 ----------------------------- Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Type 'help' for command list. Type 'quit' to close CLI session.
Ora, esegui il seguente comando per elencare tutti i backend:
varnish> backend.list
Dovresti vedere il seguente output:
200 Backend name Admin Probe Last updated boot.default probe Healthy (no probe) Sat, 13 Mar 2021 03:00:02 GMT
diario di verniciatura
L'utilità paintlog viene utilizzata per visualizzare i registri di tutte le richieste degli utenti.
varnishlog
Dovresti ottenere il seguente output:
* << BeReq >> 6 - Begin bereq 5 fetch - VCL_use boot - Timestamp Start: 1615604631.507187 0.000000 0.000000 - BereqMethod GET - BereqURL / - BereqProtocol HTTP/1.1 - BereqHeader Host: 69.87.218.214 - BereqHeader Upgrade-Insecure-Requests: 1 - BereqHeader User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 - BereqHeader Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - BereqHeader Accept-Language: en-GB,en-US;q=0.9,en;q=0.8 - BereqHeader X-Forwarded-For: 106.213.193.241 - BereqHeader Accept-Encoding: gzip - BereqHeader X-Varnish: 6 - VCL_call BACKEND_FETCH - VCL_return fetch - BackendOpen 31 boot.default 127.0.0.1 8080 127.0.0.1 58860 - BackendStart 127.0.0.1 8080 - Timestamp Bereq: 1615604631.507458 0.000270 0.000270 - Timestamp Beresp: 1615604631.507844 0.000657 0.000386 - BerespProtocol HTTP/1.1 - BerespStatus 200 - BerespReason OK - BerespHeader Server: nginx/1.14.1 - BerespHeader Date: Sat, 13 Mar 2021 03:03:51 GMT - BerespHeader Content-Type: text/html - BerespHeader Content-Length: 4057 - BerespHeader Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
vernishstat
Il comando paintstat fornisce informazioni sulle statistiche in memoria, l'archiviazione, i thread creati e gli oggetti eliminati.
varnishstat
Dovresti vedere la seguente schermata:
vernice
Il comando painttop legge i registri di memoria condivisa verniciati e presenta un elenco continuamente aggiornato delle voci di registro più comuni.
varnishtop
Dovresti vedere la seguente schermata:
verniciatore
Varnishhist analizza i registri della vernice e stampa le ultime n richieste in base alla loro elaborazione.
varnishhist
Dovresti vedere la seguente schermata:
Conclusione
Nella guida sopra, hai imparato come installare e configurare la cache Varnish con il server web Apache e Nginx. Ora puoi implementare la cache di Varnish nell'ambiente di produzione e velocizzare le prestazioni del tuo sito web. Sentiti libero di chiedermi se hai domande.