En este tema, aprenderemos sobre la configuración y el uso de la caché en NGINX. La caché es una técnica esencial para mejorar el rendimiento de las aplicaciones web al reducir la carga en los servidores de backend y disminuir los tiempos de respuesta para los usuarios finales.
Conceptos Clave
- Caché de Proxy: Almacena las respuestas de los servidores de backend para que las solicitudes futuras puedan ser servidas directamente desde la caché.
- Caché de Contenido Estático: Almacena archivos estáticos como imágenes, CSS y JavaScript.
- Directivas de Caché: Configuraciones específicas en NGINX que controlan el comportamiento de la caché.
Configuración Básica de Caché en NGINX
Paso 1: Configurar el Directorio de Caché
Primero, necesitamos definir un directorio donde NGINX almacenará los archivos en caché. Esto se hace en el bloque http
de la configuración de NGINX.
http { proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; ... }
proxy_cache_path
: Define el directorio de caché y sus parámetros./var/cache/nginx
: Directorio donde se almacenarán los archivos en caché.levels=1:2
: Estructura de subdirectorios para almacenar los archivos en caché.keys_zone=my_cache:10m
: Define una zona de memoria compartida llamadamy_cache
con un tamaño de 10 MB para almacenar las claves de caché.max_size=1g
: Tamaño máximo de la caché en disco.inactive=60m
: Tiempo que un archivo puede permanecer en la caché sin ser solicitado antes de ser eliminado.use_temp_path=off
: Desactiva el uso de un directorio temporal para archivos en caché.
Paso 2: Configurar el Bloque de Servidor
Luego, configuramos el bloque de servidor para utilizar la caché.
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_cache my_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; add_header X-Cache-Status $upstream_cache_status; } }
proxy_pass
: Define el servidor de backend.proxy_cache
: Habilita la caché para esta ubicación y utiliza la zona de cachémy_cache
.proxy_cache_valid
: Define la duración de la caché para diferentes códigos de estado HTTP.200 302 10m
: Respuestas con códigos de estado 200 y 302 se almacenarán en caché por 10 minutos.404 1m
: Respuestas con código de estado 404 se almacenarán en caché por 1 minuto.
add_header X-Cache-Status $upstream_cache_status
: Añade un encabezado HTTP para indicar el estado de la caché (HIT, MISS, etc.).
Ejemplo Completo
http { proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_cache my_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; add_header X-Cache-Status $upstream_cache_status; } } }
Ejercicio Práctico
Ejercicio 1: Configurar Caché de Proxy
- Configura un directorio de caché en NGINX.
- Configura un bloque de servidor para utilizar la caché.
- Verifica que las respuestas se están almacenando en caché y que el encabezado
X-Cache-Status
muestra el estado correcto.
Solución
- Configura el directorio de caché:
http { proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; }
- Configura el bloque de servidor:
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_cache my_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; add_header X-Cache-Status $upstream_cache_status; } }
- Verifica el estado de la caché:
- Realiza una solicitud a tu servidor NGINX.
- Verifica el encabezado
X-Cache-Status
en la respuesta HTTP.
Deberías ver un encabezado similar a:
En solicitudes posteriores, deberías ver:
Conclusión
En esta sección, hemos aprendido cómo configurar la caché en NGINX para mejorar el rendimiento de nuestras aplicaciones web. La caché puede reducir significativamente la carga en los servidores de backend y mejorar los tiempos de respuesta para los usuarios finales. En el siguiente módulo, exploraremos más prácticas de seguridad y optimización en NGINX.
Curso de NGINX
Módulo 1: Introducción a NGINX
Módulo 2: NGINX como Servidor Web
- Sirviendo Contenido Estático
- Listados de Directorios
- Páginas de Error Personalizadas
- Registro y Formatos de Registro
Módulo 3: NGINX como Proxy Inverso
- Introducción al Proxy Inverso
- Configurando un Proxy Inverso
- Balanceo de Carga
- Verificaciones de Salud