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 puede implementar frente a su servidor web (que es el servidor de origen o backend) como Nginx, para recibir las solicitudes HTTP de los clientes y reenviarlas 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 objetivo principal es hacer que sus aplicaciones se carguen más rápido, trabajando como un motor de almacenamiento en caché. Recibe solicitudes de los clientes y las reenvía al backend una vez para almacenar en caché el contenido solicitado (almacenar archivos y fragmentos de archivos en la memoria). Entonces, todas las solicitudes futuras de contenido exactamente similar se atenderá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 entregará contenido de la memoria en lugar de procesar archivos de Nginx desde el disco de almacenamiento.

Además del almacenamiento en caché, Varnish también tiene varios otros casos de uso, incluido un enrutador de solicitud HTTP y un equilibrador de carga, un firewall de aplicaciones web y más.

El barniz se configura utilizando el lenguaje de configuración de barniz (VCL) incorporado altamente extensible que le permite escribir políticas sobre cómo se deben manejar las solicitudes entrantes. Puede usarlo para crear soluciones, reglas y módulos personalizados.

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 nuevo. Los usuarios de RHEL 8 deben asegurarse de habilitar la suscripción a redhat.

Para configurar una pila LEMP completa en lugar de instalar solo el servidor web Nginx, consulte las siguientes guías.

  1. How to Install LEMP Server on CentOS 8
  2. How to Install LEMP Server on RHEL 8

Paso 1: Instale el servidor web Nginx en CentOS / RHEL 8

1. CentOS/RHEL 8 viene con la última versión del software del servidor web Nginx, así que lo instalaremos desde el repositorio predeterminado usando los siguientes comandos dnf.

# dnf update
# dnf install nginx

2. Una vez instalado Nginx, debe iniciar, habilitar y verificar el estado mediante los siguientes comandos systemctl.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. Si tiene un poco de curiosidad, también puede verificar el socket TCP de Nginx, que se ejecuta en el puerto 80 de forma predeterminada, usando el siguiente comando ss.

# ss -tpln

4. Si está ejecutando el firewall en el sistema, asegúrese 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 por defecto 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 completada la instalación del módulo, puede confirmar la versión de Varnish instalada en su sistema.

# varnishd -V

7. Después de instalar Varnish Cache, el comando ejecutable principal instalado 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 de barniz principal escrito con VCL y/etc/varnish/secret es el archivo secreto de barniz.

8. A continuación, inicie el servicio Varnish, habilítelo para que se inicie automáticamente durante el inicio del sistema y confirme que está en funcionamiento.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish

Paso 3: Configurar Nginx para que funcione con Varnish Cache

9. En esta sección, mostraremos cómo configurar Varnish Cache para que se ejecute frente a 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, observe el bloque de servidor nginx predeterminado configurado en el archivo de configuración principal (/etc/nginx/nginx.conf).

# vi /etc/nginx/nginx.conf

Busque la sección de bloqueo del servidor como se muestra en la siguiente captura de pantalla.

10. Para ejecutar Varnish frente a Nginx, debe cambiar el puerto Nginx predeterminado de 80 a 8080 (o cualquier otro puerto de su elección).

Esto debe hacerse 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 desea servir a través de Varnish.

Por ejemplo, el bloque del 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 otros sitios web/aplicaciones en su servidor; de lo contrario, Nginx siempre dirigirá las solicitudes al bloque de servidor predeterminado.

11. Una vez completada la configuración, compruebe si hay errores en el archivo de configuración y reinicie el servicio Nginx para aplicar los cambios recientes.

# nginx -t
# systemctl restart nginx

12. A continuación, para recibir solicitudes HTTP de los clientes, debemos configurar Varnish para que se ejecute en el puerto 80. A diferencia de las versiones anteriores de Varnish Cache, donde este cambio se realizó en el archivo de entorno Varnish (que ahora está obsoleto), en la versión 6.0 y encima.

Necesitamos realizar el cambio requerido en el archivo de servicio de Varnish. Ejecute el siguiente comando para abrir el archivo de servicio apropiado para editarlo.

# systemctl edit --full  varnish

Busque la siguiente línea y cambie el valor del conmutador -a , que especifica la dirección de escucha y el puerto. Configure el puerto en 80 como se muestra en la siguiente captura de pantalla.

Tenga en cuenta que si no especifica una dirección, varnishd escuchará en todas las interfaces IPv4 e IPv6 disponibles activas en el servidor.

ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m

Guarde los cambios en el archivo y salga.

13. A continuación, debe definir el servidor backend que visitará Varnish para obtener contenido. Esto se hace en el archivo de configuración principal de Varnish.

# vi /etc/varnish/default.vcl 

Busque la sección de configuración de backend predeterminada y cambie la cadena "default" a server1 (o cualquier nombre de su elección para representar su servidor de origen). Luego configure el puerto en 8080 (o el puerto de escucha de Nginx que definió en su 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 su servidor web Nginx se está ejecutando en un host diferente. Por ejemplo, otro servidor con la dirección 10.42.0.247, luego configure el parámetro .host como se muestra.

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

Guarde el archivo y ciérrelo.

14. A continuación, debe volver a cargar la configuración del administrador systemd debido a los cambios recientes en el archivo del servicio Varnish, luego reiniciar el servicio Varnish para aplicar los cambios de la siguiente manera.

# systemctl daemon-reload
# systemctl restart varnish

15. Ahora confirme que Nginx y Varnish están escuchando en los sockets TCP configurados.

# ss -tpln

Paso 4: Probar la configuración de la caché de barniz de Nginx

16. A continuación, verifique que las páginas web se estén publicando a través de Varnish Cache de la siguiente manera. Abra un navegador web y navegue usando la IP del servidor o FDQN como se muestra en la siguiente captura de pantalla.

http://www.tecmin.lan
OR
http://10.42.0.144

17. Alternativamente, use el comando curl como se muestra. Use la dirección IP de su 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 útiles de administración de caché de Varnish

18. En esta sección final, describiremos brevemente algunos de los programas de utilidad útiles con los que se entrega Varnish Cache, que puede usar para controlar varnishd, acceder a registros en memoria y estadísticas generales y más.

varnishadm una utilidad para controlar una instancia de Varnish en ejecución. Establece una conexión CLI a varnishd. Por ejemplo, puede usarlo para enumerar 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

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

# varnishlog

Un varnishstat también conocido como estadísticas de barniz, que le brinda un vistazo al rendimiento actual de Varnish al brindar acceso a estadísticas en memoria, como aciertos y errores de caché, información sobre el almacenamiento, hilos creados, objetos eliminados (lea man varnishstat para obtener más información) .

# varnishstat 

Una utilidad de varnishtop lee los registros de memoria compartida y presenta una lista continuamente actualizada de las entradas de registro que ocurren con más frecuencia (lea man varnishtop para obtener más información).

# varnishtop 

Una utilidad varnishhist (varnish history) analiza los registros de barniz y genera un histograma actualizado continuamente que muestra la distribución de las últimas n solicitudes según su procesamiento (lea man varnishhist para obtener más información).

# varnishhist

¡Eso es todo! En esta guía, hemos mostrado cómo instalar Varnish Cache y ejecutarlo frente al servidor HTTP Nginx 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, lea la documentación de Varnish Cache 6.0.

El principal inconveniente de Varnish Cache es su falta de soporte nativo para HTTPS. Para habilitar HTTPS en su sitio web/aplicación, debe configurar un proxy de terminación SSL/TLS para que funcione junto con Varnish Cache para proteger su sitio. En nuestro próximo artículo, mostraremos cómo habilitar HTTPS para Varnish Cache usando Hitch en CentOS/RHEL 8.