Cómo acelerar Nginx con caché Varnish en CentOS 7

Varnish Cache (también conocido como Varnish) es un acelerador HTTP de alto rendimiento de código abierto diseñado para acelerar los servidores web. En nuestros últimos artículos, hemos explicado cómo configurar Varnish Cache para Apache en CentOS 7 y CentOS 8.

En este artículo, te mostraremos cómo instalar y usar Varnish Cache como un front-end para el servidor HTTP Nginx en CentOS 7. Esta guía también debería funcionar en RHEL 7.

Requisitos

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

Paso 1: Instalar el servidor web Nginx en CentOS 7

1. Comienza instalando el servidor HTTP Nginx desde los repositorios de software predeterminados de CentOS utilizando el gestor de paquetes YUM de la siguiente manera.

# yum install nginx
Install Nginx on CentOS 7

2. Cuando la instalación se complete, inicia el servicio de Nginx por ahora y habilítalo para que se inicie automáticamente al arrancar el sistema.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Start and Enable Nginx at Boot

3. Ahora modifica las reglas del firewall del sistema para permitir paquetes entrantes en el puerto 80 utilizando los comandos a continuación.

# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --permanent --add-port=8080/tcp
# firewall-cmd --reload
Open Nginx Port on Firewall

Paso 2: Instalar Varnish Cache en CentOS 7

4. Ahora hay paquetes RPM precompilados para la última versión de Varnish Cache 6 (es decir, 6.5 en el momento de la escritura), por lo tanto, necesitas agregar el repositorio oficial de Varnish Cache.

Antes de eso, necesitas habilitar el repositorio EPEL para instalar varios paquetes de dependencias como se muestra a continuación.

# yum install -y epel-release

5. A continuación, instala pygpgme, un paquete para manejar firmas GPG y yum-utils, una colección de utilidades útiles que extienden las características nativas de yum de varias maneras.

# yum install pygpgme yum-utils

6. Ahora crea un archivo llamado /etc/yum.repos.d/varnishcache_varnish5.repo que contenga la configuración del repositorio que se muestra a continuación.

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

Importante: Asegúrate de reemplazar el y 7 en la configuración a continuación con tu distribución de Linux y versión:

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. Ahora ejecuta el siguiente comando para actualizar la caché yum local e instalar el paquete de caché de varnish (no olvides aceptar la clave GPG escribiendo y o yes mientras instalas el paquete):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8. Después de instalar Varnish Cache, el ejecutable principal se instalará como /usr/sbin/varnishd y los archivos de configuración de varnish se encuentran en /etc/varnish/:

  • /etc/varnish/default.vcl – este es el archivo de configuración principal de varnish, está escrito usando el lenguaje de configuración de varnish (VCL).

9. Ahora inicie el servicio de barniz, habilítelo para que se inicie automáticamente durante el arranque del sistema y verifique su estado para asegurarse de que esté en funcionamiento de la siguiente manera.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10. Puede confirmar que la instalación de Varnish fue exitosa al ver la ubicación del ejecutable de Varnish y la versión instalada en su sistema.

$ which varnishd
$ varnishd -V
Salida de ejemplo
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

Paso 3: Configurar Nginx para trabajar con la caché de Varnish

11. En este paso, necesitas configurar Nginx para que funcione con la caché de Varnish. Por defecto, Nginx escucha en el puerto 80, debes cambiar el puerto predeterminado de Nginx a 8080 para que funcione detrás de la caché de Varnish.

Abre el archivo de configuración de Nginx /etc/nginx/nginx.conf y encuentra la línea listen 80 y cámbiala a listen 8080 como se muestra en el bloque del servidor que se muestra en la captura de pantalla a continuación.

# vi /etc/nginx/nginx.conf
Configure Nginx Listening Port

Nota: Esto debe hacerse en todos los archivos de configuración de bloques de servidor (generalmente creados en /etc/nginx/conf.d/) para los sitios web que deseas servir a través de Varnish.

12. A continuación, abre el archivo de configuración del servicio de barniz y encuentra el parámetro ExecStart que especifica el puerto en el que escucha Varnish y cambia su valor de 6081 a 80.

# systemctl edit --full  varnish

La línea debería verse como se muestra.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Cache Port

13. A continuación, configura Nginx como servidor backend para el proxy de Varnish, en el archivo de configuración /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl 

Encuentra la sección backend, y define la IP y el puerto del host. A continuación se muestra la configuración predeterminada del backend, establece esto para que apunte a tu servidor de contenido real.

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

14. Después de realizar todas las configuraciones necesarias, reinicia Nginx HTTPD y la caché de Varnish para efectuar los cambios anteriores.

# systemctl daemon-reload
# systemctl restart nginx
# systemctl restart varnish

Paso 4: Prueba la caché de Varnish en Nginx

15. Finalmente, prueba si la caché de Varnish está habilitada y funcionando con el servicio de Nginx utilizando el comando cURL a continuación para ver el encabezado HTTP.

# curl -I http://localhost
Salida de ejemplo
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 06 Jan 2021 09:24:18 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
ETag: "53762af0-12e1"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Accept-Ranges: bytes
Connection: keep-alive

Puedes encontrar información adicional en el Repositorio de Github de Varnish Cache: https://github.com/varnishcache/varnish-cache

En este tutorial, explicamos cómo configurar Varnish Cache para el servidor HTTP de Nginx en CentOS 7. Utiliza el formulario de comentarios a continuación para enviarnos cualquier consulta o ideas adicionales.

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-7/