Skip to content

Cómo configurar FastCGI Caching con Nginx en su VPS

php_fcgi

FastCGI es un protocolo que permite reducir la carga asociada al servidor y poder atender a un mayor número de peticiones simultáneas. El servidor web Nginx incluye un módulo FastCGI que tiene directivas para cachear contenido dinámico procedente de páginas creadas en PHP. Configurando este módulo, eliminamos la necesidad de tener que configurar otras opciones como Varnish o plugins específicos de la aplicación. Este módulo también nos permite excluir el contenido que queremos cachear por medio de varios mecanismos como pueden ser url, cookies o cualquier otra variable del servidor.

Veamos a continuación como configurar FastCGI en un VPS con Nginx.

Habilitar FastCGI en tu VPS

Para este artículo asumiremos que ya tenemos configurado Nginx con PHP en nuestro servidor. Editamos el fichero de configuración de nuestro Virtual Host donde tiene que estar habilitada la cache.

Añadimos las siguientes líneas al principio del archivo fuera de la directiva server{}

La directiva “fastcgi_cache_path” especifica la localización de la cache, su tamaño, el nombre de la zona de memoria, los niveles de subdirectorios y el tiempo de inactividad.

La ubicación de la caché podrá estar en cualquier lugar en el disco duro, sin embargo, el tamaño deberá ser menor que la suma de la memoria RAM y swap del sistema, ya que de lo contrario recibiríamos un error. Mediante la opción de tiempo de inactividad lo que hacemos es indicar un tiempo que una vez transcurrido y cuya información no haya sido solicitada, será borrada de la cache.

La directiva “fastcgi_cache_key” especifica cómo se comprueban los nombres de archivo de caché. Nginx encripta estos archivos basados en esta directiva.

A continuación, movemos la directiva de localización que pasa las peticiones PHP a php5-fpm. Dentro de “location ~ .php$ { }” añadimos las siguientes líneas.

La directiva “fastcgi_cache” hace referencia al nombre de la zona de memoria que nosotros especificamos en la directiva “fastcgi_cache_path”.

Por defecto Nginx almacena los objetos de cache durante la duración especificada en las cabeceras: X-Accel-Expires/Expires/Cache-Control.

La directiva “fastcgi_cache_valid” es utilizada para especificar el tiempo de vida de la cache si esas cabeceras se pierden. Responde con un código 200 en caso de estar cacheada la información.

Una vez hechos estos cambios, revisamos que no de error la configuración.

Si ha dado ok, recargamos Nginx.

El fichero de configuración de nuestro virtual host debería tener una apariencia similar a lo siguiente.

Testear FastCGI Caching en nuestro VPS

Creamos un fichero PHP que muestre en salida el tiempo en formato UNIX

Ejecutamos este archivo varias veces para ver el resultado que nos muestra.

Si todo funciona de forma correcta, deberías ver el mismo resultado todas las veces que lo ejecutes.

Ajustando las excepciones de la caché

Hay ocasiones en que ciertas partes dinámicas de los portales webs no deben ser cacheadas, por ejemplo en el caso de las páginas de logueo. Estas deberían ser excluidas de este proceso y lo podemos conseguir por medio del uso de algunas variables del servidor como “request_uri”, “request_method” y “http_cookie”.

Aquí os dejamos un ejemplo de configuración que se deberíamos añadir dentro del bloque server{}.

Para aplicar la variable “$no_cache” a la directiva apropiada, hay que colocar las siguientes líneas dentro de “location ~ .php${}”

La directiva “fasctcgi_cache_bypass” ignora la caché existente para las solicitudes relacionadas con las condiciones establecidas anteriormente por nosotros. La directiva “fastcgi_no_cache” no almacena en caché la solicitud si se cumplen las condiciones especificadas.

Published incacheSugerencias tecnicas

Be First to Comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *