Cómo instalar Varnish Cache 6 para Nginx en CentOS/RHEL 8

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.

  1. Cómo instalar el servidor LEMP en CentOS 8
  2. Cómo instalar el servidor LEMP en RHEL 8

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
Verify Nginx Service Status

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
Check Nginx TCP Port

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
Install Varnish Cache in CentOS 8

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
Check Varnish Version

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
Verify Varnish Cache on CentOS 8

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.

Nginx Server Block Configuration

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 {
        }
}
Nginx Server Block Configuration

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.

Disable Nginx Server Block

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
Check Nginx Configuration Syntax

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
Change Varnish Listen Port

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";
}
Set Default Varnish Backend Servers

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
Confirm Nginx and Varnish Ports

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
Verify Nginx Pages Served Via Varnish Cache

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
Verify Nginx Varnish Cache Page Using Curl

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
List Configured Backends

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
Check Info About Clients and Requests

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 
Show Varnish Statistics

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 
View Shared Memory logs

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
Show Requests Histogram

¡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/