Cómo instalar y configurar Varnish con Apache en Ubuntu 22.04

Varnish Cache es un acelerador HTTP de alto rendimiento diseñado para sitios web dinámicos de alto tráfico. Actúa como intermediario entre tu cliente y el servidor, gestionando todas las peticiones entrantes antes de que lleguen al backend de tu servidor web. Varnish almacena en caché una copia de cada página web servida por el servidor web. Cuando un usuario solicita una página en caché, Varnish sirve la copia en caché en lugar de solicitar la misma página una y otra vez al servidor backend. Esto hace que la caché de página completa de Varnish sea ideal para tiendas con mucho tráfico y miles de productos.

Este post te mostrará cómo instalar la Caché de Varnish y configurarla con Apache en Ubuntu 22.04.

Requisitos

  • Un servidor con Ubuntu 22.04.
  • Una contraseña de root configurada en tu servidor.

Instalar y configurar el servidor web Apache

Antes de empezar, el servidor web Apache debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo con el siguiente comando:

apt install apache2 -y

A continuación, tendrás que editar el archivo de configuración de Apache y cambiar el puerto por defecto por otro diferente.

nano /etc/apache2/ports.conf

Busca la siguiente línea:

Listen 80

Y, sustitúyela por la siguiente línea:

Listen 8080

Guarda y cierra el archivo y, a continuación, edita el archivo de configuración del host virtual por defecto de Apache:

nano /etc/apache2/sites-available/000-default.conf

Busca la siguiente línea

<VirtualHost *:80>

Y, sustitúyela por la siguiente línea

<VirtualHost *:8080>

Guarda y cierra el archivo, luego reinicia el servicio Apache para aplicar los cambios:

systemctl restart apache2

Ahora puedes comprobar el puerto de escucha de Apache utilizando el siguiente comando:

ss -antpl | grep 8080

Deberías ver la siguiente salida:

LISTEN 0      511                *:8080            *:*    users:(("apache2",pid=2553,fd=4),("apache2",pid=2552,fd=4),("apache2",pid=2551,fd=4))

Instalar Varnish Cache

Por defecto, la última versión de la caché Varnish no está disponible en el repositorio por defecto de Ubuntu. Así que tendrás que añadir el repositorio de Varnish a APT.

Primero, instala las dependencias necesarias utilizando el siguiente comando:

apt install debian-archive-keyring curl gnupg apt-transport-https -y

A continuación, añade la clave GPG de Varnish utilizando el siguiente comando:

curl -fsSL https://packagecloud.io/varnishcache/varnish70/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/varnish.gpg

A continuación, crea un archivo fuente de Varnish:

nano /etc/apt/sources.list.d/varnishcache_varnish70.list

Añade la siguiente línea:

deb https://packagecloud.io/varnishcache/varnish70/ubuntu/ focal main
deb-src https://packagecloud.io/varnishcache/varnish70/ubuntu/ focal main

Guarda y cierra el archivo y, a continuación, crea otro archivo de configuración:

nano /etc/apt/preferences.d/varnish

Añade las siguientes líneas:

Package: varnish
Pin: origin packagecloud.io
Pin-Priority: 900

Guarda y cierra el archivo y luego actualiza la caché del repositorio con el siguiente comando:

apt update

A continuación, instala la Caché de Varnish con el siguiente comando:

apt install varnish -y

Una vez instalada la Caché Varnish, edita el archivo default.vcl y define tu servidor backend:

nano /etc/varnish/default.vcl

Cambia las siguientes líneas según tu servidor backend:

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

Guarda y cierra el archivo cuando hayas terminado.

Configurar Varnish para que funcione con Apache

A continuación, debes crear un archivo de configuración de servicio personalizado para Varnish.

mkdir /etc/systemd/system/varnish.service.d
nano /etc/systemd/system/varnish.service.d/customport.conf

Añade las siguientes líneas:

[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m

Guarda y cierra el archivo, luego recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, reinicia el servicio Varnish con el siguiente comando:

systemctl restart varnish

Ahora puedes comprobar el estado de la caché de Varnish con el siguiente comando:

systemctl status varnish

Deberías obtener la siguiente salida:

? varnish.service - Varnish Cache, a high-performance HTTP accelerator
     Loaded: loaded (/lib/systemd/system/varnish.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/varnish.service.d
             ??customport.conf
     Active: active (running) since Tue 2022-10-18 13:07:44 UTC; 14s ago
    Process: 4968 ExecStart=/usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m (c>
   Main PID: 4969 (varnishd)
      Tasks: 217
     Memory: 90.6M
        CPU: 595ms
     CGroup: /system.slice/varnish.service
             ??4969 /usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m
             ??4983 /usr/sbin/varnishd -a :80 -a localhost:8443,PROXY -p feature=+http2 -f /etc/varnish/default.vcl -s malloc,256m

Oct 18 13:07:43 ubuntu2204 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Version: varnish-7.0.3 revision 6a4c6a5c7e66a664b140278c209f0b18c544cab8
Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Platform: Linux,5.15.0-33-generic,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Child (4983) Started
Oct 18 13:07:44 ubuntu2204 varnishd[4969]: Child (4983) said Child starts
Oct 18 13:07:44 ubuntu2204 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.

En este punto, Varnish está instalado y escucha en el puerto 80. Puedes comprobarlo con el siguiente comando:

ss -antpl | grep :80

Obtendrás la siguiente salida:

LISTEN 0      1024         0.0.0.0:80         0.0.0.0:*    users:(("cache-main",pid=4983,fd=3),("varnishd",pid=4969,fd=3))
LISTEN 0      1024            [::]:80            [::]:*    users:(("cache-main",pid=4983,fd=5),("varnishd",pid=4969,fd=5))
LISTEN 0      511                *:8080             *:*    users:(("apache2",pid=4749,fd=4),("apache2",pid=4748,fd=4),("apache2",pid=4745,fd=4))

Verificar la caché de Varnish

Ahora puedes verificar la caché de Varnish utilizando el comando CURL:

curl -I http://localhost/

Obtendrás la caché de Varnish en la siguiente salida:

HTTP/1.1 200 OK
Date: Tue, 18 Oct 2022 13:08:27 GMT
Server: Apache/2.4.52 (Ubuntu)
Last-Modified: Tue, 18 Oct 2022 13:03:09 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/7.0)
ETag: W/"29af-5eb4eb6b9e071-gzip"
Accept-Ranges: bytes
Content-Length: 10671
Connection: keep-alive

Conclusión

Enhorabuena! has instalado correctamente Varnish Cache con Apache en Ubuntu 22.04. Ahora puedes utilizar la caché Varnish en tu servidor para acelerar el tiempo de carga del sitio web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...