15 Jun 2015

Habilitar cache para FastCGI en Ngninx

Habilitar cache para FastCGI en Ngninx

FastCGI es una opción que brinda mayor velocidad al momento de procesar scripts desde nuestro servidor, y en conjunto con Nginx, permite que nustras aplicaciones se ejecuten de una forma más fluida.

Si tenemos una aplicación que atiendo muchas peticiones similares, un blog, por ejemplo, no tiene sentido que se vuelva a procesar el script para atender cada petición.

Para ello podemos habilitar un caché que aseguré una respuesta rápida a peticiones redundantes.

Para habilitarlo, tomando en cuenta que ya tenemos configurado FastCGI, editamos el archivo /etc/nginx/nginx.conf añadiendo lo siguiente:

fastcgi_cache_path /var/cache/nginx/fastcgi_temp levels=1:2 keys_zone=CZONE:15m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;

Con lo que se generarán archivos temporales identificados con una llave según la URL solicitada (identificando así peticiones distintas).

Ahora es necesario habilitar las características del cache en cada aplicación.

En tu vhost, (etc/nginx/conf.d/default.conf por ejemplo), hay que añadir o editar lo siguiente

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 90;
        fastcgi_read_timeout 90;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_cache_bypass $no_cache;
        fastcgi_no_cache $no_cache;
        fastcgi_cache   CZONE;
        fastcgi_cache_valid   200 302  1h;
        fastcgi_cache_valid   301 1h;
        fastcgi_cache_valid   any 1h;
        fastcgi_cache_min_uses  2;
    }

Con esto, reiniciamos nuestro servicio de nginx y tendremos un caché habilitado para nuestros scripts.

Artículos relacionados