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

  1. Caché de Proxy: Almacena las respuestas de los servidores de backend para que las solicitudes futuras puedan ser servidas directamente desde la caché.
  2. Caché de Contenido Estático: Almacena archivos estáticos como imágenes, CSS y JavaScript.
  3. 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 llamada my_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

  1. Configura un directorio de caché en NGINX.
  2. Configura un bloque de servidor para utilizar la caché.
  3. Verifica que las respuestas se están almacenando en caché y que el encabezado X-Cache-Status muestra el estado correcto.

Solución

  1. 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;
}
  1. 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;
    }
}
  1. Verifica el estado de la caché:
  • Realiza una solicitud a tu servidor NGINX.
  • Verifica el encabezado X-Cache-Status en la respuesta HTTP.
curl -I http://example.com

Deberías ver un encabezado similar a:

X-Cache-Status: MISS

En solicitudes posteriores, deberías ver:

X-Cache-Status: HIT

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.

© Copyright 2024. Todos los derechos reservados