Varnish Cache és un servidor intermediari HTTP gratuït i de codi obert. Es tracta d'un accelerador HTTP dissenyat per a llocs web dinàmics amb molt de trànsit. Està situat entre el client i el servidor web Apache per servir el trànsit web de manera ràpida. També es pot utilitzar com a equilibrador de càrrega si utilitzes diversos servidors. Emmagatzema a la memòria cau els continguts als quals els usuaris accedeixen sovint i els desa a la seva memòria. Això augmenta el rendiment del lloc web.
En aquest tutorial t'expliquem com configurar Apache amb Varnish Cache a Ubuntu 20.04.
Requisits previs
- Un servidor Cloud amb Ubuntu 20.04 en execució.
- Un usuari no root amb privilegis Sudo.
Instal·la el servidor web Apache
Per defecte, el paquet d'Apache està inclòs al repositori per defecte d'Ubuntu. Pots instal·lar-lo amb l'ordre següent:
# apt-get install apache2 -y Un cop Apache estigui instal·lat, inicia el servei d'Apache i habilita'l perquè s'iniciï quan es reiniciï el sistema:
# systemctl start apache2 && systemctl enable apache2Ara, obre el navegador web i accedeix a la pàgina de prova d'Apache amb l'URL http://your-server-ip. Hauries de veure la pantalla següent:
Canvia el port per defecte d'Apache
Per defecte, Varnish utilitza el port HTTP 80. Com que utilitzaràs Varnish com a servidor frontal, hauràs de configurar Apache perquè escolti al port 8080.
Per fer-ho, primer edita el fitxer ports.conf d'Apache i canvia el port per defecte de 80 a 8080:
# nano /etc/apache2/ports.confCanvia la línia següent:
Listen 8080Desa i tanca el fitxer i aleshores edita el fitxer de configuració de l'amfitrió virtual d'Apache:
# nano /etc/apache2/sites-available/000-default.confCanvia la línia següent:
<VirtualHost *:8080>Desa i tanca el fitxer i després reinicia el servei Apache per aplicar els canvis:
# systemctl restart apache2A continuació, verifica el port d'escolta d'Apache amb l'ordre següent:
# ss -antpl | grep 8080Hauries d'obtenir el resultat següent:
LISTEN 0 511 *:8080 *:* users:(("apache2",pid=2194,fd=4),("apache2",pid=2193,fd=4),("apache2",pid=2192,fd=4))
Instal·la Varnish
Ara ja pots instal·lar el paquet Varnish amb l'ordre següent:
# apt-get install varnish -yUn cop Varnish estigui instal·lat, inicia el servei Varnish i habilita'l perquè s'iniciï quan es reiniciï el sistema:
# systemctl start varnish
# systemctl enable varnishPer defecte, Varnish escolta als ports 6081 i 6082. Pots comprovar-ho amb l'ordre següent:
# ss -antpl | grep varnishAquest és el resultat que hauries de veure:
LISTEN 0 1024 0.0.0.0:6081 0.0.0.0:* users:(("cache-main",pid=3003,fd=3),("varnishd",pid=2974,fd=3))
LISTEN 0 10 127.0.0.1:6082 0.0.0.0:* users:(("varnishd",pid=2974,fd=8))
LISTEN 0 1024 [::]:6081 [::]:* users:(("cache-main",pid=3003,fd=4),("varnishd",pid=2974,fd=4))
LISTEN 0 10 [::1]:6082 [::]:* users:(("varnishd",pid=2974,fd=7))
Configura Varnish com a servidor intermediari invers per a Apache
En aquesta secció, configuraràs Varnish perquè escolti al port 80 i perquè cada petició del client s'enviï al servidor Apache que escolta al port 8080.
Primer, edita el fitxer de configuració default.vcl de Varnish:
# nano /etc/varnish/default.vclCanvia les línies següents:
backend default {
.host = "127.0.0.1";
.port = "8080";
}Desa i tanca el fitxer.
Per continuar, edita el fitxer /etc/default/varnish i canvia el port per defecte de 6081 a 80:
# nano /etc/default/varnishCanvia el port de 6081 a 80:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"Desa i tanca el fitxer.
Després, hauràs d'editar el fitxer de servei de Varnish /lib/systemd/system/varnish.service:
# nano /lib/systemd/system/varnish.serviceCanvia el port de 6081 a 80 tal com es mostra més avall:
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256mDesa i tanca el fitxer i després torna a carregar el dimoni systemd per aplicar els canvis:
# systemctl daemon-reloadDesprés, reinicia el servei de Varnish per aplicar els canvis:
# systemctl restart varnishAra, comprova el port d'escolta de Varnish amb l'ordre següent:
# ss -antpl | grep 80Hauries d'obtenir el resultat següent:
LISTEN 0 1024 0.0.0.0:80 0.0.0.0:* users:(("cache-main",pid=8522,fd=3),("varnishd",pid=8494,fd=3))
LISTEN 0 1024 [::]:80 [::]:* users:(("cache-main",pid=8522,fd=4),("varnishd",pid=8494,fd=4))
Verifica la memòria cau de Varnish
En aquest punt, Varnish està instal·lat i configurat com a servidor intermediari invers per a Apache.
Pots verificar-ho amb l'ordre següent:
# curl -I http://your-server-ipSi tot és correcte, hauries de veure la capçalera HTTP de Varnish:
HTTP/1.1 200 OK
Date: Tue, 27 Jul 2021 15:57:01 GMT
Server: Apache/2.4.41 (Ubuntu)
Last-Modified: Tue, 27 Jul 2021 15:50:01 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.2)
ETag: W/"2aa6-5c81cd2a0a40c-gzip"
Accept-Ranges: bytes
Content-Length: 10918
Connection: keep-alive
També pots consultar el registre de Varnish per obtenir més informació:
# varnishncsaAquest és el resultat que hauries d'obtenir:
106.213.219.132 - - [27/Jul/2021:15:57:31 +0000] "GET http://69.87.221.34/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
106.213.219.132 - - [27/Jul/2021:15:57:41 +0000] "GET http://69.87.221.34/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
Conclusió
Has configurat correctament Varnish com a servidor intermediari invers per a Apache a Ubuntu 20.04!
Ja pots implementar aquesta configuració a l'entorn de producció per augmentar el rendiment del teu lloc web.