Varnish Cache es un acelerador de aplicaciones web de alto rendimiento, moderno y de código abierto. Es un proxy HTTP inverso rápido que almacena en caché contenido para acelerar el rendimiento del servidor web, almacenando el contenido web en la memoria del servidor, en una caché. Está configurado para ejecutarse frente a un servidor de origen como Apache (HTTPD) servidor web.
Cuando un cliente solicita contenido, Varnish acepta la solicitud HTTP, envía la solicitud al servidor de origen, almacena en caché los objetos devueltos y responde a la solicitud del cliente. La próxima vez que el cliente solicite el mismo contenido, Varnish lo servirá desde la caché. De esta manera, reduce el tiempo de respuesta y el consumo de ancho de banda de la red en futuras solicitudes equivalentes.
Varnish también funciona como enrutador de solicitudes HTTP, firewall de aplicaciones web, equilibrador de carga y más. Se configura utilizando el flexible Lenguaje de Configuración de Varnish (VCL) que es extensible mediante Módulos de Varnish (también conocidos como VMODs), soporta Inclusiones de Borde (ESI), compresión y descompresión Gzip, y mucho más.
En este artículo, aprenderás cómo instalar el servidor web Apache HTTPD y Varnish Cache 6 en un servidor CentOS/RHEL 8 nuevo, incluida la configuración de Varnish para que se ejecute frente al servidor HTTPD.
Prerrequisitos:
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
Paso 1: Instalación del servidor web Apache en CentOS/RHEL 8
1. Comience actualizando todos los paquetes de software instalados en el sistema de la siguiente manera usando el comando DNF.
# dnf update
2. A continuación, ejecute el siguiente comando para instalar el servidor web Apache HTTP desde el repositorio AppStream.
# dnf install httpd
3. Tan pronto como se complete la instalación, inicie el servicio httpd, habilítelo para que se inicie automáticamente durante el arranque del sistema y verifique su estado para confirmar que está en funcionamiento, utilizando el comando systemctl.
# systemctl start httpd # systemctl enable httpd # systemctl status httpd

4. Por defecto, CentOS/RHEL 8 incluye un firewall completamente bloqueado (ejecute firewall-cmd –state para confirmar). Debe abrir el acceso al servicio HTTP en el firewall para permitir que los usuarios accedan a sitios web o aplicaciones que se ejecutan sobre HTTP, y también recargar la configuración de firewalld para aplicar los nuevos cambios.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
Paso 2: Instalación de Varnish Cache 6.4 en CentOS/RHEL 8
5. Ahora que el servidor web Apache está en funcionamiento, puede proceder a instalar Varnish Cache en el sistema utilizando el siguiente comando.
# dnf module install varnish

6. Después de una instalación exitosa, puede verificar la versión de Varnish instalada en su sistema.
# varnishd -V

7. A continuación, el ejecutable principal se instala como /usr/sbin/varnishd. Además, los archivos de configuración de Varnish se almacenan en el directorio /etc/varnish, donde:
- /etc/varnish/default.vcl – es el archivo de configuración principal de varnish escrito usando VCL.
- /etc/varnish/secret – es el archivo secreto de varnish.
8. Ahora inicie el servicio de varnish, por ahora, habilítelo para que se inicie automáticamente durante el arranque del sistema en caso de reinicio del servidor y verifique su estado para asegurarse de que esté funcionando como se muestra a continuación.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

Paso 3: Configuración de Apache para trabajar con la caché de Varnish
9. Ahora es el momento de configurar la caché de Varnish para que se ejecute delante del servicio de Apache. Por defecto, el servidor Apache está configurado para escuchar en el puerto 80, esto se define en el archivo de configuración principal /etc/httpd/conf/httpd.conf.
Ábralo para editarlo usando su editor de texto favorito.
# vi /etc/httpd/conf/httpd.conf
Busque el parámetro Listen. Para ejecutar Varnish delante del servidor Apache, debe cambiar el puerto predeterminado 80 a 8080 (o a cualquier otro puerto de su elección) como se muestra en la siguiente captura de pantalla.
Este puerto se añadirá como el puerto del servidor backend en el archivo de configuración de Varnish más adelante.

Además, la configuración del host virtual para cada sitio web/aplicación que se servirá a través de Varnish debe configurarse para escuchar en el puerto mencionado anteriormente. Aquí está la configuración para nuestro sitio de prueba (/etc/httpd/conf.d/tecmint.lan.conf).
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.lan # Other directives here </VirtualHost>

Importante: Para evitar que se utilice la página de prueba predeterminada del servidor HTTP Apache, comenta todas las líneas en el archivo /etc/httpd/conf.d/welcome.conf o simplemente elimina el archivo.
# rm /etc/httpd/conf.d/welcome.conf
10. A continuación, prueba la sintaxis de configuración de httpd en busca de errores. Si está bien, reinicia el servicio httpd para aplicar los cambios.
# httpd -t # systemctl restart httpd

Configuración de Varnish para Systemd
11. Para implementar Varnish frente a HTTPD, simplemente necesitas configurarlo para escuchar las solicitudes de cliente en el puerto HTTP predeterminado 80 como se explica a continuación.
Ten en cuenta que en Varnish Cache 6.0 y versiones superiores, debes establecer el puerto en el que el servidor Varnish escucha en el archivo de servicio de Varnish para systemd. Primero, ábrelo para editarlo.
# systemctl edit --full varnish
Busca la línea ExecStart, luego cambia el valor del interruptor -a
(que especifica la dirección y el puerto en los que Varnish escucha) de :6081
a :80
como se indica en la siguiente captura de pantalla.
Es importante destacar que si no especificas una dirección, varnishd escuchará en todas las interfaces IPv4 e IPv6 disponibles en el servidor.
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Guarda los cambios en el archivo y sal.
Configuración de servidores de backend de Varnish utilizando VCL
12. Ahora, necesitas configurar el servidor de origen, conocido en la terminología de Varnish como un backend. Es el servidor que comprende HTTP, con el que Varnish habla para obtener contenido – en este caso, httpd. Se configura en el archivo de configuración principal /etc/varnish/default.vcl.
# vi /etc/varnish/default.vcl
Hay una sección de configuración de backend predeterminada llamada default. Puedes cambiar “default” a server1 (o cualquier nombre que elijas para cumplir con los estándares de tu entorno). Por defecto, el parámetro host apunta a localhost, asumiendo que el servidor de backend se está ejecutando en el localhost.
Luego, establece el puerto en 8080 (el puerto que definiste en el archivo de configuración del host virtual de Apache) como se muestra en la captura de pantalla.
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

Si tu servidor de backend se está ejecutando en un host diferente, por ejemplo, otro servidor con la dirección 10.42.1.10, entonces el parámetro host debería apuntar a esta dirección IP.
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
Guarda el archivo y ciérralo.
13. Después de realizar todos los cambios necesarios con respecto a Varnish, recarga la configuración del administrador de systemd para reflejar los nuevos cambios en el archivo de servicio de Varnish y también reinicia el servicio de Varnish para aplicar los cambios generales.
# systemctl daemon-reload # systemctl restart varnish
14. En este punto, Varnish y Apache deberían estar escuchando en el puerto 80 y 8080 respectivamente. Puedes confirmarlo utilizando el comando de estadísticas de socket.
# ss -tpln

Paso 4: Prueba de la configuración de Varnish Cache y Apache
14. Para probar la configuración de Varnish Cache-HTTPD, abre un navegador web y navega utilizando la IP del servidor o el FQDN como se muestra en la siguiente captura de pantalla.
http://10.42.0.144 OR http://www.tecmin.lan
Luego verifica si las páginas web están siendo servidas a través de Varnish Cache de la siguiente manera. Verifica las cabeceras HTTP haciendo clic con el botón derecho en la página web mostrada, selecciona Inspeccionar para abrir las herramientas de desarrollo, luego haz clic en la pestaña Red, y recarga la página. Luego selecciona una solicitud para ver las cabeceras HTTP y confirmar esto como se muestra en la siguiente captura de pantalla.

Alternativamente, puedes ejecutar el siguiente comando curl para verificarlo.
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

Programas de utilidad útiles de Varnish Cache
15. Terminemos esta guía echando un vistazo a algunos de los programas útiles que vienen con la distribución de Varnish Cache. Incluyen utilidades para la administración de la caché de varnish, mostrar registros detallados de registro y ver estadísticas de rendimiento de varnish como se describe a continuación.
varnishadm
El primero es varnishadm, que se utiliza para administrar una instancia en ejecución de Varnish. Establece una conexión de interfaz de línea de comandos con varnishd. Puede afectar una instancia en ejecución de Varnish iniciando y deteniendo varnishd, cambiando parámetros de configuración, recargando el VCL, enumerando backends y más.
# varnishadm > backend.list

Para obtener más información, lea man varnishadm.
varnishlog
El siguiente programa es varnishlog, que se utiliza para acceder a datos específicos de las solicitudes (es decir, información sobre clientes y solicitudes específicas). Proporciona grandes cantidades de información, por lo que generalmente es necesario filtrarla.
# varnishlog

Para obtener más información, lea el man varnishlog.
varnishstat
También tenemos varnishstat (estadísticas de Varnish), que se utiliza para acceder a estadísticas generales como el número total de solicitudes, el número de objetos y más.
# varnishstat

Para obtener más información, lea el man varnishstat.
varnishtop
Luego tenemos varnishtop, que es una utilidad que lee el registro de Varnish y presenta una lista actualizada continuamente de las entradas de registro más comúnmente ocurridas.
# varnishtop

Para obtener más información, lea el man varnishtop.
varnishhist
Otra utilidad útil es varnishhist (historial de Varnish), que lee los registros de Varnish y presenta un histograma continuamente actualizado que muestra la distribución de las últimas N solicitudes según su procesamiento.
# varnishhist

Para obtener más información, lee el man varnishhist.
¡Ahí lo tienes! Has implementado correctamente Varnish Cache para acelerar el contenido de tu aplicación web servido usando el Servidor HTTP Apache en CentOS/RHEL 8.
Si tienes alguna consulta sobre este tema o pensamientos para compartir, utiliza el formulario de comentarios a continuación. Consulta la documentación de Varnish Cache 6.0 para obtener más información.
Si deseas habilitar HTTPS en tu sitio, consulta nuestro próximo artículo, que mostrará cómo habilitar SSL/TLS para Varnish Cache usando Hitch en CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/