Cómo instalar y configurar Varnish Cache 6 con Nginx en CentOS 8
Varnish Cache es un acelerador HTTP de proxy inverso gratuito y de código abierto para sitios web y API. Se puede instalar como un proxy inverso frente a cualquier servidor web que se ejecute en HTTP. Se encuentra entre el servidor web y el navegador y guarda páginas web, cookies y otros datos en la memoria. Este caché se utilizará para atender todas las solicitudes futuras de contenido exactamente similar. Esto aumentará la carga de la aplicación web y mejorará el rendimiento del servidor web más de 300 veces.
En este tutorial, configuraremos el servidor Nginx como un servidor back-end y lo configuraremos para escuchar en el puerto 8080, luego configuraremos Varnish cache para escuchar en el puerto HTTP predeterminado 80.
requisitos previos
- Un servidor que ejecuta CentOS 8.
- Se configura una contraseña de root en el servidor.
Instalar y configurar el servidor web Nginx
Primero, deberá instalar el servidor web Nginx en su sistema. Puedes instalarlo con el siguiente comando:
dnf install nginx -y
Una vez instalado, inicie el servicio Nginx y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start nginx systemctl enable nginx
De forma predeterminada, Nginx está escuchando en el puerto 80. Por lo tanto, deberá configurar Nginx para escuchar en el puerto 80. Puede configurarlo editando el archivo de configuración predeterminado de Nginx:
nano /etc/nginx/nginx.conf
Encuentra las siguientes líneas:
listen 80 default_server; listen [::]:80 default_server;
Y reemplácelos con las siguientes líneas:
listen 8080 default_server; listen [::]:8080 default_server;
Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio Nginx para aplicar los cambios:
systemctl restart nginx
En este punto, el servidor web Nginx está instalado y escuchando en el puerto 8080. Puede verificarlo con el siguiente comando:
netstat -tpln | grep 8080
Deberías obtener el siguiente resultado:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Instalar Varnish Cache
De forma predeterminada, el paquete Varnish está disponible en el repositorio predeterminado de CentOS 8. Puede instalarlo simplemente ejecutando el siguiente comando:
dnf module install varnish
Una vez instalado, inicie el servicio Varnish con el siguiente comando:
systemctl start varnish
También puede verificar la versión instalada de Varnish cache con el siguiente comando:
varnishd -V
Debería ver el siguiente resultado:
varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91) Copyright (c) 2006 Verdens Gang AS Copyright (c) 2006-2018 Varnish Software AS
Configurar Varnish para Nginx
A continuación, deberá configurar Varnish para que se ejecute en el puerto 80 y recibir solicitudes HTTP de los clientes. Puede configurarlo editando el archivo de configuración predeterminado de Varnish:
systemctl edit --full varnish
Encuentra la siguiente línea:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
Y, reemplácelo con la siguiente línea:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Guarde y cierre el archivo cuando haya terminado.
A continuación, deberá definir el servidor backend para Varnish. Puede hacerlo editando el archivo de configuración principal de Varnish /etc/varnish/default.vcl:
nano /etc/varnish/default.vcl
Cambia las siguientes líneas:
backend myserver { .host = "127.0.0.1"; .port = "8080"; }
Guarde y cierre el archivo cuando haya terminado. Luego, vuelva a cargar el demonio systemd con el siguiente comando:
systemctl daemon-reload
A continuación, reinicie el servicio Varnish y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl restart varnish systemcl 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 (/etc/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-08-29 09:36:58 EDT; 12s ago Process: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 30424 (varnishd) Tasks: 217 Memory: 91.8M CGroup: /system.slice/varnish.service ??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Aug 29 09:36:57 centos8 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30424]: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30424]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) said Child starts Aug 29 09:36:58 centos8 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
Ahora puede verificar el puerto de escucha de Nginx y Varnish con el siguiente comando: Publicidad
netstat -tpln | grep 80
Debería ver el siguiente resultado:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30424/varnishd tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::80 :::* LISTEN 30424/varnishd tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Configurar SELinux y Firewall
De manera predeterminada, SELinux está habilitado en CentOS 8. Por lo tanto, deberá configurar SELinux para Varnish. Puedes configurarlo con el siguiente comando:
setsebool -P httpd_can_network_connect 1
A continuación, deberá permitir el puerto 80 a través de firewalld. Puedes hacerlo con el siguiente comando:
firewall-cmd --permanent --zone public --add-port 80/tcp firewall-cmd --reload
Una vez que haya terminado, puede continuar con el siguiente paso.
Probar Varnish Cache
En este punto, Varnish caché está instalado y configurado con el servidor web Nginx. Ahora, es hora de probar si Varnish caché funciona o no.
Puede probarlo usando el comando curl como se muestra a continuación:
curl -I http://localhost
Debería ver el siguiente resultado:
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Sat, 29 Aug 2020 13:53:44 GMT Content-Type: text/html; charset=UTF-8 X-Powered-By: PHP/7.2.24 X-Varnish: 32800 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
Conclusión
¡Felicidades! Ha instalado con éxito Varnish Cache con Nginx en CentOS 8. Espero que también pueda configurar Varnish Cache con el servidor web Apache fácilmente. No dude en preguntarme si tiene alguna pregunta.