Varnish Cache (comúnmente conocido como Varnish) es un acelerador HTTP de proxy inverso de código abierto, potente y rápido, con una arquitectura moderna y un lenguaje de configuración flexible. Ser un proxy inverso simplemente significa que es un software que se puede implementar delante de su servidor web (que es el servidor de origen o backend) como Nginx, para recibir las solicitudes HTTP de los clientes y enviarlas al servidor de origen para su procesamiento. Y entrega la respuesta del servidor de origen a los clientes.
Varnish actúa como intermediario entre Nginx y los clientes pero con algunos beneficios de rendimiento. Su principal propósito es hacer que sus aplicaciones se carguen más rápido, al funcionar como un motor de almacenamiento en caché. Recibe las solicitudes de los clientes y las envía al backend una vez para almacenar en caché el contenido solicitado (almacenar archivos y fragmentos de archivos en la memoria). Entonces, todas las futuras solicitudes de contenido exactamente similar se servirán desde la caché.
Esto hace que sus aplicaciones web se carguen más rápido y mejora indirectamente el rendimiento general de su servidor web porque Varnish servirá el contenido desde la memoria en lugar de que Nginx procese archivos desde el disco de almacenamiento.
Aparte del almacenamiento en caché, Varnish también tiene varios otros casos de uso, incluido un enrutador de solicitudes HTTP, equilibrador de carga, cortafuegos de aplicaciones web y más.
El barniz se configura utilizando el altamente extensible Lenguaje de Configuración de Varnish (VCL) incorporado que le permite escribir políticas sobre cómo deben manejarse las solicitudes entrantes. Puede utilizarlo para construir soluciones personalizadas, reglas y módulos.
En este artículo, repasaremos los pasos para instalar el servidor web Nginx y Varnish Cache 6 en un servidor CentOS 8 o RHEL 8 nuevos. Los usuarios de RHEL 8 deben asegurarse de habilitar la suscripción de Red Hat.
Para configurar una pila LEMP completa en lugar de instalar solo el servidor web Nginx, consulte las siguientes guías.
Paso 1: Instalar el servidor web Nginx en CentOS/RHEL 8
1. CentOS/RHEL 8 viene con la última versión de Nginx software del servidor web, así que instalaremos desde el repositorio predeterminado utilizando los siguientes comandos dnf.
# dnf update # dnf install nginx
2. Una vez que Nginx está instalado, necesitarás iniciar, habilitar y verificar el estado usando los siguientes comandos systemctl.
# systemctl start nginx # systemctl enable nginx # systemctl status nginx

3. Si tienes un poco de curiosidad, también puedes verificar el socket TCP de Nginx, que se ejecuta en el puerto 80 por defecto, usando el siguiente comando ss.
# ss -tpln

4. Si estás ejecutando el firewall en el sistema, asegúrate de actualizar las reglas del firewall para permitir solicitudes a un servidor web.
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
Paso 2: Instalación de Varnish Cache 6 en CentOS/RHEL 8
5. CentOS/RHEL 8 proporciona un módulo DNF de Varnish Cache predeterminado que contiene la versión 6.0 LTS (Soporte a largo plazo).
Para instalar el módulo, ejecute el siguiente comando.
# dnf module install varnish

6. Una vez que la instalación del módulo esté completa, puedes confirmar la versión de Varnish instalada en tu sistema.
# varnishd -V

7. Después de instalar Varnish Cache, el comando ejecutable principal se instala en /usr/sbin/varnishd y los archivos de configuración de Varnish se encuentran en /etc/varnish/.
El archivo /etc/varnish/default.vcl es el archivo de configuración principal de Varnish escrito en VCL y /etc/varnish/secret es el archivo secreto de Varnish.
8. A continuación, inicia el servicio de Varnish, habilítalo para que se inicie automáticamente durante el arranque del sistema y confirma que está en funcionamiento.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

Paso 3: Configuración de Nginx para trabajar con Varnish Cache
9. En esta sección, mostraremos cómo configurar Varnish Cache para que se ejecute delante de Nginx. Por defecto, Nginx escucha en el puerto 80, normalmente cada bloque de servidor (o host virtual) está configurado para escuchar en este puerto.
Por ejemplo, echa un vistazo al bloque de servidor predeterminado de Nginx configurado en el archivo de configuración principal (/etc/nginx/nginx.conf).
# vi /etc/nginx/nginx.conf
Busca la sección del bloque de servidor como se muestra en la siguiente captura de pantalla.

10. Para ejecutar Varnish frente a Nginx, debería cambiar el puerto predeterminado de Nginx de 80 a 8080 (o cualquier otro puerto de su elección).
Esto debe realizarse en todos los archivos de configuración de bloques de servidor futuros (generalmente creados en /etc/nginx/conf.d/) para sitios o aplicaciones web que desee servir a través de Varnish.
Por ejemplo, el bloque de servidor para nuestro sitio de prueba tecmint.lan
es /etc/nginx/conf.d/tecmint.lan.conf y tiene la siguiente configuración.
server { listen 8080; server_name www.tecmint.lan; root /var/www/html/tecmint.lan/; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

Importante: Recuerde deshabilitar el bloque de servidor predeterminado comentando su sección de configuración en el archivo /etc/nginx/nginx.conf como se muestra en la siguiente captura de pantalla. Esto le permite comenzar a ejecutar otras páginas web/aplicaciones en su servidor, de lo contrario, Nginx siempre dirigirá solicitudes al bloque de servidor predeterminado.

11. Una vez que se complete la configuración, revise el archivo de configuración para cualquier error y reinicie el servicio de Nginx para aplicar los cambios recientes.
# nginx -t # systemctl restart nginx

12. Después, para recibir solicitudes HTTP de los clientes, necesitamos configurar a Varnish para que se ejecute en el puerto 80. A diferencia de las versiones anteriores de Varnish Cache, donde este cambio se realizaba en el archivo de entorno de Varnish (que ahora está obsoleto), en las versiones 6.0 y superiores.
Necesitamos hacer el cambio requerido en el archivo del servicio de Varnish. Ejecute el siguiente comando para abrir el archivo de servicio apropiado para la edición.
# systemctl edit --full varnish
Encuentra la siguiente línea y cambia el valor de la opción -a
, que especifica la dirección y el puerto de escucha. Establece el puerto en 80 como se muestra en la siguiente captura de pantalla.
Nota si no especificas una dirección, varnishd escuchará en todas las interfaces IPv4 y 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 salta.
13. Siguiente, necesitas definir el servidor backend que Varnish visitará para recuperar contenido de él. Esto se hace en el archivo de configuración principal de Varnish.
# vi /etc/varnish/default.vcl
Busca la sección de configuración predeterminada del backend y cambia la cadena “default” a server1 (o cualquier nombre de tu elección para representar tu servidor de origen). A continuación, establece el puerto en 8080 (o el puerto de escucha de Nginx que has definido en tu bloque de servidor).
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

Para esta guía, estamos ejecutando Varnish y Nginx en el mismo servidor. Si tu servidor web Nginx se está ejecutando en un equipo diferente. Por ejemplo, otro equipo con dirección 10.42.0.247, entonces establece el parámetro .host
como se muestra.
backend server1 { .host = "10.42.0.247"; .port = "8080"; }
Guarda el archivo y cierra él.
14. Siguiente, necesitas recargar la configuración del gestor systemd debido a los cambios recientes en el archivo de servicio de Varnish, y luego reinicia el servicio de Varnish para aplicar los cambios como se muestra a continuación.
# systemctl daemon-reload # systemctl restart varnish
15. Ahora confirmar que Nginx y Varnish están escuchando en los sockets TCP configurados.
# ss -tpln

Paso 4: Prueba de configuración de caché de Varnish en Nginx
16. Después, verifique que las páginas web se están sirviendo a través de Caché de Varnish de la siguiente manera. Abra un navegador web y navegue usando la IP del servidor o el FDQN mostrado en la siguiente captura de pantalla.
http://www.tecmin.lan OR http://10.42.0.144

17. Alternativamente, use el comando curl mostrado. Use la dirección IP del servidor o el FQDN del sitio web o use 127.0.0.1 o localhost si está probando localmente.
# curl -I http:///www.tecmint.lan

Utilidades de administración de caché de Varnish
18. En esta sección final, describiremos brevemente algunas de las utilidades de programa que Caché de Varnish suministra, que puede usar para controlar a varnishd, acceder a los registros en memoria y estadísticas generales y más.
varnishadm
varnishadm una utilidad para controlar una instancia de Varnish en ejecución. Establece una conexión de CLI con varnishd. Por ejemplo, puede usarla para listar los backends configurados, como se muestra en la siguiente captura de pantalla (lea man varnishadm para obtener más información).
# varnishadm varnish> backend.list

varnishlog
La utilidad varnishlog proporciona acceso a datos específicos de solicitud. Ofrece información sobre clientes específicos y solicitudes (lea man varnishlog para obtener más información).
# varnishlog

varnishstat
A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).
# varnishstat

varnishtop
A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).
# varnishtop

varnishhist
A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).
# varnishhist

¡Eso es todo! En esta guía, hemos mostrado cómo instalar Varnish Cache y ejecutarlo frente al servidor Nginx HTTP para acelerar la entrega de contenido web en CentOS/RHEL 8.
Cualquier pensamiento o pregunta sobre esta guía se puede compartir utilizando el formulario de comentarios a continuación. Para obtener más información, lee la documentación de Varnish Cache.
La principal desventaja de Varnish Cache es su falta de soporte nativo para HTTPS. Para habilitar HTTPS en tu sitio web/aplicación, necesitas configurar un proxy de terminación SSL/TLS para funcionar en conjunto con Varnish Cache y proteger tu sitio. En nuestro próximo artículo, mostraremos cómo habilitar HTTPS para Varnish Cache utilizando Hitch en CentOS/RHEL 8.
Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/