Función de NGINX Plus: almacenamiento en caché

Uno de los casos de uso más populares para NGINX Plus es como caché de contenido, tanto para acelerar servidores de origen local como para crear servidores de borde para redes de entrega de contenido (CDN). El almacenamiento en caché puede reducir enormemente la carga en sus servidores de origen, dependiendo de la capacidad de almacenamiento en caché de su contenido y del perfil del tráfico de usuarios.

NGINX Plus puede almacenar en caché contenido recuperado de servidores HTTP ascendentes y respuestas devueltas por los servicios FastCGI , SCGI y uwsgi .

NGINX Plus amplía las capacidades de almacenamiento en caché de contenido de NGINX Open Source al agregar soporte para la purga de caché y una visualización más completa del estado de la caché en el panel de monitoreo de actividad en vivo :

cache-state-R7

Motivos para usar el almacenamiento en caché de contenido

El almacenamiento en caché de contenido mejora los tiempos de carga de las páginas web, reduce la carga de los servidores ascendentes y aumenta la disponibilidad al usar el contenido almacenado en caché como copia de seguridad en caso de error de los servidores de origen:

  • Rendimiento mejorado del sitio : NGINX Plus ofrece contenido en caché de todo tipo a la misma velocidad que el contenido estático, lo que significa una latencia reducida y un sitio web con mayor capacidad de respuesta.
  • Mayor capacidad : NGINX Plus descarga tareas repetitivas de sus servidores de origen, liberando capacidad para atender a más usuarios y ejecutar más aplicaciones.
  • Mayor disponibilidad : NGINX Plus aísla a sus usuarios de errores catastróficos al ofrecer contenido en caché (incluso si está desactualizado) cuando los servidores de origen están inactivos.

NGINX Plus y NGINX brindan una solución consolidada para su infraestructura web, reuniendo un servidor HTTP para contenido de origen, puertas de enlace de aplicación para FastCGI y otros protocolos, y un proxy HTTP para servidores ascendentes. NGINX Plus agrega equilibrio de carga de aplicación de nivel empresarial , consolidando los equilibradores de carga del front-end en su infraestructura web.

Análisis detallado del almacenamiento en caché de contenido con NGINX Plus

El contenido en caché se almacena en una caché persistente en disco y lo proporcionan NGINX Plus y NGINX exactamente de la misma forma que el contenido de origen.

Para habilitar el almacenamiento en caché de contenido, incluya las directivas proxy_cache_path y proxy_cache en la configuración:

# Define a content cache location on disk
proxy_cache_path /tmp/cache keys_zone=mycache:10m inactive=60m;

server {
    listen 80;
    server_name localhost;
 
    location / {
        proxy_pass http://localhost:8080;
 
       # reference the cache in a location that uses proxy_pass
       proxy_cache mycache;
    }
}

De forma predeterminada, NGINX Plus y NGINX adoptan un enfoque seguro y cauteloso para el almacenamiento en caché de contenido. Almacenan en caché el contenido recuperado por una solicitud GET o HEAD , sin una respuesta Set-Cookie , y el tiempo de caché está definido por los encabezados del servidor de origen ( X-Accel-Expires , Cache-Control y Expires ). NGINX Plus respeta las extensiones Cache-Control definidas en RFC 5861 , stale-while-revalidate y stale-if-error .

Cada uno de estos comportamientos se puede ampliar y ajustar mediante una serie de directivas. Para obtener una introducción completa, consulte la Guía de administración de NGINX Plus .

Instrumentación de la memoria caché

La API de monitoreo de actividad en vivo de NGINX Plus informa una variedad de estadísticas que puede usar para medir la utilización y la efectividad de sus cachés de contenido:

Datos JSON de ejemplo de la API de supervisión de actividad en vivo

Los datos JSON incluyen información completa sobre la actividad de caché.

Gestión de contenido obsoleto

De forma predeterminada, NGINX Plus y NGINX sirven contenido en caché mientras sea válido. La validez es configurable o puede controlarse mediante el encabezado Cache-Control establecido por el servidor de origen. Después del período de validez, el contenido almacenado en caché se considera obsoleto y debe volver a validarse verificando que siga siendo el mismo que el contenido encontrado en el servidor de origen.

Es posible que un cliente no solicite nunca contenido obsoleto, por lo que NGINX Plus y NGINX revalidan el contenido obsoleto solo cuando el cliente lo solicita. Esta acción puede realizarse en segundo plano, sin interrumpir ni retrasar la solicitud del cliente al servir inmediatamente el contenido obsoleto. Este tipo de contenido también se ofrece cuando el servidor de origen no está disponible, lo que proporciona una alta disponibilidad durante los picos de carga o interrupciones largas del servidor de origen.

Las condiciones bajo las cuales NGINX y NGINX Plus sirven contenido obsoleto se pueden configurar con directivas o respetando los valores que se encuentran en el encabezado Cache-Control del servidor de origen, stale-while-revalidate y stale-if-error .

Purga de contenido de la memoria caché

Uno de los efectos secundarios del almacenamiento en caché de contenido es que las actualizaciones de contenido del servidor de origen no se propagan necesariamente de forma inmediata a la memoria caché, por lo que es posible que a los clientes se les siga proporcionando el contenido antiguo durante un tiempo. Si en una operación de actualización se cambia un número de recursos al mismo tiempo (por ejemplo, se cambia un archivo CSS y varias imágenes a las que se hace referencia), es posible que al cliente se le proporcione una mezcla de recursos obsoletos y actuales, lo que da lugar a una presentación incoherente.

Con la función de purga de caché de NGINX Plus, puedes solucionar este problema fácilmente. La directiva proxy_cache_purge le permite eliminar inmediatamente las entradas del caché de contenido de NGINX Plus que coincidan con un valor configurado. Este método se activa más fácilmente mediante una solicitud que contiene un método o encabezado HTTP personalizado.

Por ejemplo, la siguiente configuración identifica las solicitudes que utilizan el método HTTP PURGE y elimina las URL coincidentes:

proxy_cache_path /tmp/cache keys_zone=mycache:10m levels=1:2 inactive=60s;

map $request_method $purge_method {
    PURGE 1;
    default 0;
}

server {
    listen 80;
    server_name www.example.com;

    location / {
        proxy_pass http://localhost:8002;
        proxy_cache mycache;

        proxy_cache_purge $purge_method;
    }
}

Puede emitir solicitudes de purga utilizando una variedad de herramientas, como el comando curl en el siguiente ejemplo:

$ curl -X PURGE -D – "http://www.example.com/*"
HTTP/1.1 204 No Content
Server: nginx/1.5.12
Date: Sat, 03 May 2014 16:33:04 GMT
Connection: keep-alive

Como se muestra en el ejemplo, puede purgar un conjunto completo de recursos que tienen una URL común, agregando el comodín asterisco ( * ) a la URL.

Más información

NGINX Plus hereda todas las funciones de almacenamiento en caché de NGINX. Para más información, consulte la Guía de administración de NGINX Plus y la documentación de referencia .

Próximos pasos