Instale Varnish Cache 6 para Apache/Nginx en CentOS 8

Estadísticas de barniz

Varnish Cache es un potente proxy HTTP inverso que se utiliza para acelerar las aplicaciones web y que está disponible como software de código abierto. Varnish almacena en caché contenido estático y dinámico. Maneja todas las solicitudes entrantes antes de que lleguen al backend de su servidor web. Se encuentra entre un navegador web y un servidor web Apache o Nginx. Varnish cache almacena todas las solicitudes de páginas entrantes en la memoria para que los servidores web no tengan que crear la misma página web una y otra vez.

En esta publicación, le mostraremos cómo instalar Varnish Cache con Apache y Nginx en CentOS 8.

Requisitos previos

  • Un servidor que ejecuta CentOS 8.
  • Una contrase√Īa de root est√° configurada en su servidor.

Empezando

Antes de comenzar, se recomienda actualizar los paquetes de su sistema a la √ļltima versi√≥n. Puede actualizarlos ejecutando el siguiente comando:

dnf update -y

Una vez que todos los paquetes estén actualizados, puede continuar con el siguiente paso.

Instalar barniz

De forma predeterminada, el paquete Varnish se incluye en el repositorio predeterminado de CentOS 8. Puede instalarlo ejecutando el siguiente comando:

dnf install varnish -y

Después de instalar Varnish, edite el archivo de configuración predeterminado de Varnish y defina la dirección respaldada por el servidor web Nginx o Apache.

nano /etc/varnish/default.vcl

Cambia las siguientes líneas:

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

Guarde y cierre el archivo cuando haya terminado.

Configurar barniz

De forma predeterminada, Varnish escucha en el puerto 6081. Por lo tanto, deber√° configurar Varnish para escuchar en el puerto 80. Puede configurarlo editando el archivo varnish.service:

nano /lib/systemd/system/varnish.service

Encuentra la siguiente línea:

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

Se reemplazó con la siguiente línea:

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

Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd para aplicar los cambios:

systemctl daemon-reload

A continuación, inicie el servicio Varnish y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start varnish
systemctl enable varnish

También puede verificar el estado del Barniz con el siguiente comando:

systemctl status varnish

Deberías obtener el siguiente resultado:

? varnish.service - Varnish Cache, a high-performance HTTP accelerator
   Loaded: loaded (/usr/lib/systemd/system/varnish.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-03-12 04:17:32 EST; 4s ago
  Process: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS)
 Main PID: 6392 (varnishd)
    Tasks: 217
   Memory: 99.5M
   CGroup: /system.slice/varnish.service
           ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
           ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Mar 12 04:17:32 masternode systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Mar 12 04:17:32 masternode varnishd[6392]: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7
Mar 12 04:17:32 masternode varnishd[6392]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Child (6402) Started
Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) Started
Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) said Child starts
Mar 12 04:17:32 masternode systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.

En este punto, Varnish se inicia y escucha en el puerto 80. Puede verificarlo con el siguiente comando:

ss -antpl | grep varnishd

Deberías obtener el siguiente resultado:

LISTEN    0         10               127.0.0.1:34977            0.0.0.0:*        users:(("varnishd",pid=1532,fd=11))                                            
LISTEN    0         128                0.0.0.0:80               0.0.0.0:*        users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6))                
LISTEN    0         128                   [::]:80                  [::]:*        users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7))                
LISTEN    0         10                   [::1]:34909               [::]:*        users:(("varnishd",pid=1532,fd=10))                                            

En este punto, Varnish est√° instalado y configurado. Ahora puede continuar con el siguiente paso.

Instalar y configurar Nginx para que funcione con Varnish

Primero, deber√° instalar el paquete Nginx en su servidor. Puedes instalarlo con el siguiente comando:

dnf install nginx -y

Una vez instalado, deberá cambiar el puerto de escucha de Nginx de 80 a 8080. Puede hacerlo editando el archivo de configuración predeterminado de Nginx:

nano /etc/nginx/nginx.conf

Cambia las siguientes líneas:

        listen       8080 default_server;
        listen       [::]:8080 default_server;

Guarde y cierre el archivo, luego verifique el Nginx para cualquier error de sintaxis usando el siguiente comando:

nginx -t

Deberías obtener el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, inicie el servicio Nginx y habilítelo para que se inicie al reiniciar el sistema:

systemctl start nginx
systemctl enable nginx

También puede verificar el puerto de escucha de Nginx con el siguiente comando: Publicidad

ss -antpl | grep 8080

Deberías obtener el siguiente resultado:

LISTEN    0         128                0.0.0.0:8080             0.0.0.0:*        users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8))                        
LISTEN    0         128                   [::]:8080                [::]:*        users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))                        

En este punto, la caché de Varnish está instalada y configurada para reenviar todas las solicitudes provenientes del puerto 80 al servidor web Nginx que está escuchando en el puerto 8080.

Puede verificar si el caché Varnish está funcionando o no con el siguiente comando:

curl -I http://localhost

Deberías obtener el siguiente resultado:

HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Fri, 12 Mar 2021 09:18:32 GMT
Content-Type: text/html
Content-Length: 4057
Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
ETag: "5d9bab28-fd9"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Accept-Ranges: bytes
Connection: keep-alive

Instalar y configurar Apache para que funcione con Varnish

Primero, deber√° instalar el paquete del servidor web Apache en su sistema. Puedes instalarlo con el siguiente comando:

dnf install httpd -y

Después de instalar Apache, edite el archivo de configuración predeterminado de Apache y cambie el puerto de escucha de 80 a 8080.

nano /etc/httpd/conf/httpd.conf

Cambia la siguiente línea:

Listen 8080

Guarde y cierre el archivo, luego inicie el servicio Apache y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start httpd
systemctl enable httpd

También puede verificar el puerto de escucha de Apache con el siguiente comando:

ss -antpl | grep httpd

Deberías obtener el siguiente resultado:

LISTEN    0         128                      *:8080                   *:*        users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))

En este punto, la caché de Varnish está instalada y configurada para reenviar todas las solicitudes provenientes del puerto 80 al servidor web Apache que está escuchando en el puerto 8080.

Puede verificar si el caché Varnish está funcionando o no con el siguiente comando:

curl -I http://localhost

Deberías obtener el siguiente resultado:

Date: Fri, 12 Mar 2021 09:21:14 GMT
Server: Apache/2.4.37 (centos)
Content-Location: index.html.zh-CN
Vary: negotiate,accept-language
TCN: choice
Last-Modified: Fri, 14 Jun 2019 03:37:43 GMT
ETag: "fa6-58b405e7d6fc0;5bd5365602e05"
Accept-Ranges: bytes
Content-Length: 4006
Content-Type: text/html; charset=UTF-8
Content-Language: zh-cn
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Connection: keep-alive

Trabajando con la línea de comando Varnish

Varnish viene con varias utilidades √ļtiles que lo ayudan a monitorear y controlar Varnish.

varnishadm es una utilidad de línea de comandos que se utiliza para enumerar los backends configurados.

varnishadm

Debería ver el siguiente resultado:

200        
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7

Type 'help' for command list.
Type 'quit' to close CLI session.

Ahora, ejecute el siguiente comando para enumerar todos los backends:

varnish> backend.list

Debería ver el siguiente resultado:

200        
Backend name                   Admin      Probe                Last updated
boot.default                   probe      Healthy (no probe)   Sat, 13 Mar 2021 03:00:02 GMT

varnishlog

La utilidad varnishlog se utiliza para mostrar los registros de todas las solicitudes de los usuarios.

varnishlog

Deberías obtener el siguiente resultado:

*   << BeReq    >> 6         
-   Begin          bereq 5 fetch
-   VCL_use        boot
-   Timestamp      Start: 1615604631.507187 0.000000 0.000000
-   BereqMethod    GET
-   BereqURL       /
-   BereqProtocol  HTTP/1.1
-   BereqHeader    Host: 69.87.218.214
-   BereqHeader    Upgrade-Insecure-Requests: 1
-   BereqHeader    User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
-   BereqHeader    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
-   BereqHeader    Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
-   BereqHeader    X-Forwarded-For: 106.213.193.241
-   BereqHeader    Accept-Encoding: gzip
-   BereqHeader    X-Varnish: 6
-   VCL_call       BACKEND_FETCH
-   VCL_return     fetch
-   BackendOpen    31 boot.default 127.0.0.1 8080 127.0.0.1 58860
-   BackendStart   127.0.0.1 8080
-   Timestamp      Bereq: 1615604631.507458 0.000270 0.000270
-   Timestamp      Beresp: 1615604631.507844 0.000657 0.000386
-   BerespProtocol HTTP/1.1
-   BerespStatus   200
-   BerespReason   OK
-   BerespHeader   Server: nginx/1.14.1
-   BerespHeader   Date: Sat, 13 Mar 2021 03:03:51 GMT
-   BerespHeader   Content-Type: text/html
-   BerespHeader   Content-Length: 4057
-   BerespHeader   Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT

barnizar

El comando varnishstat le brinda información sobre estadísticas en memoria, almacenamiento, subprocesos creados y objetos eliminados.

varnishstat

Debería ver la siguiente pantalla:

Estadísticas de barniz

varnishtop

El comando varnishtop lee los registros de memoria compartida de varnishd y presenta una lista continuamente actualizada de las entradas de registro m√°s comunes.

varnishtop

Debería ver la siguiente pantalla:

barniz

Varnishhist

Varnishhist analiza los registros de barniz e imprime las √ļltimas n solicitudes mediante su procesamiento.

varnishhist

Debería ver la siguiente pantalla:

barnizador

Conclusión

En la guía anterior, aprendió cómo instalar y configurar Varnish caché con el servidor web Apache y Nginx. Ahora puede implementar la caché Varnish en el entorno de producción y acelerar el rendimiento de su sitio web. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *