Cómo borrar un fichero de la caché de Nginx de forma manual

Nginx ofrece por defecto soporte para cachear ficheros, de tal modo que puede acelerar sustancialmente nuestra página web sirviendo una copia cacheada, evitando así utilizar recursos del servidor, y entregando con mucha velocidad la página al usuario. Es una situación en la que todos ganan.
Aquí tenéis una guía de cómo activar la caché en Nginx.

Nginx Plus (de pago) tiene opción de eliminar la caché (purgar) de forma selectiva. Sin embargo con Nginx debemos instalar un módulo para llevar a cabo esa tarea. El más conocido es el de FRiCKLE, aunque también podéis probar el módulo de wandenberg.

En este tutorial no vamos a tratar de cómo instalar los módulos para purgar la caché de Nginx, si no que vamos a ver como podemos borrar esos ficheros de forma manual, descubriendo cuál es la ruta donde se han almacenado los ficheros cacheados. Obviamente esta no es la manera más cómoda de borrar la caché, pero tal vez os sea útil en algún momento el saber cómo localizar los ficheros cacheados por Nginx.

Lo primero es saber en que directorio se está guardando la caché, para ello debemos mirar el fichero de configuración de Nginx de nuestro sitio web y buscar la siguiente directiva:

Puede ser fastcgi_cache_path o uwsgi_cache_path, dependiendo de la configuración de nuestro fichero de Nginx.

Ya tenemos la ruta de donde se están guardando los ficheros cacheados por Nginx, en este caso es: /var/cache/nginx/misitio/

Ahora vamos a ver como podemos averiguar el nombre del fichero cacheado. Para esto tenemos que saber lo que es la cache_key. En nuestro fichero de configuración de Nginx, es posible que encontremos la siguiente directiva:

Esta directiva sirve para definir de forma unívoca la URL del documento que se va a guardar. Por ejemplo, la página https://misitio.com/index.php/about-us tendrá la cache_keyhttpsmisitio.com/index.php/about-us

Si nuestro fichero de configuración de Nginx no tiene la directiva proxy_cache_key, Nginx utiliza por defecto la siguiente cache_key: $scheme$proxy_host$request_uri

Ahora que ya tenemos cómo se calcula nuestra cache_key, necesitamos un último paso para saber el nombre exacto que tendrá el fichero de caché.
Para esto debemos hacer un md5 a la cache_key, por ejemplo:

da como resultado:

Ya estamos cerca de tener la ruta completa del fichero cacheado.
Ahora debemos quedarnos con los últimos 3 caracteres del md5, en este caso e26 , y debemos:

  • Seleccionar el último carácter: 6
  • Seleccionar el antepenúltimo y penúltimo caracteres: e2
  • Unirlos en forma de subdirectorios: /6/e2 => /ultimo_caracter/antepenultimocaracter+penultimocaracter

Estos dos directorios son parte de la ruta de donde va a estar nuestro fichero, de tal forma, que nuestra ruta hasta ahora sería:

Falta lo más sencillo, que es el nombre del fichero, el cual se va a corresponder al md5 que calculamos con su cache_key. De tal forma que la ruta completa será:

Ya tenemos localizado el fichero para poder borrarlo o hacer lo que queramos con él.