Introducción
Varnish Cache es un acelerador web front-end que permite que los sitios web dinámicos manejen un alto flujo de tráfico. Es un proxy HTTP en caché inverso que almacena en caché tanto contenido estático como dinámico del servidor, lo que aumenta considerablemente la velocidad de un sitio web y mejora la experiencia del usuario.
Varnish Cache también permite a los desarrolladores configurar reglas y establecer políticas utilizando el lenguaje de configuración de Varnish, comúnmente llamado VCL. VCL es un programa que permite a Varnish dirigir lo que debe hacer con el tráfico del sitio. De esta manera, puede controlar completamente qué desea almacenar en caché y cómo.
Si su intención es instalar Varnish caché en un servidor remoto, continúe leyendo; de lo contrario, si desea instalar Varnish en su computadora local, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará la contraseña para la autenticación.
Para conectarse al servidor como root, escriba este comando:
ssh root@IP_DEL_SERVER
A continuación, se le pedirá que ingrese la contraseña del usuario root.
Si no usa el usuario root, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie el primer parámetro:
ssh VOSTRO_UTENTE@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
Ahora está conectado a su servidor, está listo para comenzar a instalar Varnish cache en Ubuntu 18.04 LTS.
Instalar Varnish y Nginx
Los paquetes Varnish y Nginx están disponibles en el repositorio oficial de Ubuntu, luego puede simplemente instalarlos con el siguiente comando:
sudo apt -y install varnish nginx
Para verificar el estado de la instalación, emita el siguiente comando:
ss -tlnf inet
Debería recibir un mensaje de salida similar al siguiente:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:6081 0.0.0.0:*
LISTEN 0 10 127.0.0.1:6082 0.0.0.0:*
- Nginx actualmente usa el puerto 80
- El barniz utiliza ambos puertos 6081 y 6082
Configurar Nginx
Nginx funcionará como un proxy inverso para Varnish, por lo que debe reconfigurar el puerto predeterminado 80 a otro puerto de escucha, por ejemplo, 8080.
Abramos el archivo de configuración predeterminado de Nginx:
sudo nano /etc/nginx/sites-available/default
Edite las entradas de escucha cambiando el puerto de 80 a 8080, luego:
...
server {
listen 8080 default_server;
listen [::]:8080 default_server;...
Guarde y cierre el archivo.
Verifique la configuración correcta de Nginx:
nginx -t
Si el resultado es positivo, reinicie Nginx; de lo contrario, vuelva a leer los pasos anteriores. Reinicie Nginx:
sudo service nginx reload
Verifique la configuración de puerto correcta:
ss -tlnf inet
Debería recibir un mensaje de salida similar al siguiente:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:6081 0.0.0.0:*
LISTEN 0 10 127.0.0.1:6082 0.0.0.0:*
Tenga en cuenta que Nginx ahora usa el puerto 8080, ya no el puerto 80.
Configurar el servidor de caché de Varnish
Ahora necesitamos enrutar el tráfico de Nginx a través del servidor de caché de Varnish, luego abrir el servicio de archivos de Varnish:
sudo nano /lib/systemd/system/varnish.service
Cambie el puerto de 6081 a 80, luego:
[Unit]
Description=Varnish HTTP accelerator
Documentation=https://www.varnish-cache.org/docs/4.1/man:varnishd
[Service]
Type=simple
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a:80 -T localhost:6082 -f /etc/varnish/defaul$
ExecReload=/usr/share/varnish/varnishreload
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
[Install]
WantedBy=multi-user.target
Guarde y cierre el archivo.
A continuación, cambie las configuraciones de Varnish configurando el puerto Nginx 8080. Abra el siguiente archivo:
sudo nano /etc/varnish/default.vcl
Si Nginx se instaló en el mismo servidor que Varnish, no modifique ninguna línea, de lo contrario ingrese su dirección IP y puerto, si es diferente:
backend default {.host = "127.0.0.1";.port = "8080";
}
Reinicie el servicio y el servidor de Varnish Cache:
sudo systemctl daemon-reload
sudo service varnish restart
Confirme la configuración del puerto correcta: ss -tlnf inet
Debería recibir un resultado similar al siguiente:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 10 127.0.0.1:6082 0.0.0.0:*
Puertos 80 y 8080 en uso por Varnish y Nginx.
Si está utilizando el firewall UFW de Ubuntu, habilite los puertos necesarios; para obtener más información, lea la siguiente guía: Configure el firewall UFW en Ubuntu 18.04.
Probar el servidor de caché de Varnish
Puede probar fácilmente el funcionamiento del servidor Varnish utilizando el comando curl. Edite el comando ingresando su dirección IP o nombre de dominio Desde la terminal da el siguiente comando:
curl -I IP_O_DOMINIO
Debería recibir un resultado similar al siguiente:
HTTP/1.1 200 OKServer: nginx/1.14.0 (Ubuntu)
Date: Fri, 12 Apr 2019 22:23:22 GMT
Content-Type: text/html
Last-Modified: Fri, 12 Apr 2019 21:42:58 GMT
ETag: W/"5cb10662-324"
Vary: Accept-Encoding
X-Varnish: 15
Age: 0
Via: 1.1 varnish (Varnish/5.2)
Accept-Ranges: bytes
También puede verificar algunas estadísticas de caché de Varnish usando el comando varnishstat:
sudo varnishstat
La configuración e instalación de Varnish Cache Server con Nginx en Ubuntu 18.04 LTS ha finalizado.