Búsqueda de sitios web

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


Varnish Cache (comúnmente conocido como Varnish) es un acelerador de proxy inverso HTTP de código abierto, potente y rápido con una arquitectura moderna y flexible. lenguaje de configuración. 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 tus aplicaciones se carguen más rápido, funcionando 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 (almacena archivos y fragmentos de archivos en la memoria). Luego, todas las solicitudes futuras de contenido exactamente similar se atenderán desde la memoria 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 desde la memoria en lugar de que Nginx procese archivos desde el disco de almacenamiento.

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

El varnish se configura utilizando el Varnish Configuration Language (VCL) integrado altamente extensible que le permite escribir políticas sobre cómo deben ser las solicitudes entrantes. manejado. 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 CentOS 8 o nuevo. Servidor RHEL 8. 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. Cómo instalar el servidor LEMP en CentOS 8
  2. Cómo instalar el servidor LEMP en RHEL 8

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

1. El CentOS/RHEL 8 viene con la última versión del software del servidor web Nginx, por lo que lo instalaremos desde el repositorio predeterminado utilizando el siguiendo los comandos dnf.

dnf update
dnf install nginx

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

systemctl start nginx
systemctl enable nginx
systemctl status nginx

3. Si tienes un poco de curiosidad, también puedes comprobar el socket TCP de Nginx, que se ejecuta en el puerto 80 de forma predeterminada, utilizando 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: Instalar Varnish Cache 6 en CentOS/RHEL 8

5. CentOS/RHEL 8 proporciona un módulo Varnish Cache DNF de forma predeterminada 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 Barniz se encuentran en /etc/barniz/.

El archivo /etc/varnish/default.vcl es el archivo de configuración de barniz principal escrito usando VCL y /etc/varnish/secret es el archivo de configuración de barniz. archivo secreto.

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 delante de Nginx. De forma predeterminada, Nginx escucha en el puerto 80, normalmente cada bloque de servidor (o host virtual) está configurado para escuchar en este puerto.

Por ejemplo, eche un vistazo al bloque del 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 predeterminado de Nginx 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 (normalmente 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 del 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 del servidor predeterminado.

11. Una vez completada la configuración, verifique el archivo de configuración en busca de errores 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, necesitamos configurar Varnish para que se ejecute en el puerto 80. A diferencia de versiones anteriores de Varnish Cache donde este cambio se realizó en el archivo de entorno Varnish (que ahora está en desuso), en la versión 6.0 y superiores. .

Necesitamos realizar el cambio requerido en el archivo del servicio 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 modificador -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 y activas en el servidor.

ExecStart=/usr/sbin/varnishd -a :80 -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 el 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 servidor1 (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, ejecutamos Varnish y Nginx en el mismo servidor. Si su servidor web Nginx se ejecuta en un host diferente. Por ejemplo, otro servidor con 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 caché de Nginx Varnish

16. A continuación, verifique que las páginas web se proporcionen 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. Utilice la dirección IP de su servidor o el FQDN del sitio web o utilice 127.0.0.1 o localhost si está realizando pruebas localmente.

curl -I http:///www.tecmint.lan

Utilidades útiles para la administración de caché de Varnish

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

barnizadm

varnishadm una utilidad para controlar una instancia de Varnish en ejecución. Establece una conexión CLI con barnizado. Por ejemplo, puede usarlo para enumerar los backends configurados como se muestra en la siguiente captura de pantalla (lea man barnizadm para obtener más información).

varnishadm
varnish> backend.list

barniz

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

varnishlog

barnizstat

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

varnishstat 

barnizar

Una utilidad 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 barniztop para obtener más información).

varnishtop 

barnizado

Una utilidad varnishhist (historial de barniz) 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 polishhist 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 Nginx HTTP para acelerar la entrega de contenido web en CentOS/RHEL 8 .

Cualquier idea o pregunta sobre esta guía se puede compartir mediante el formulario de comentarios a continuación. Para obtener más información, lea la documentación de Varnish Cache.

El principal inconveniente de Varnish Cache es su falta de soporte nativo para HTTPS. Para habilitar HTTPS en su sitio web/aplicación, necesita 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.