¿Cómo borrar el caché de nginx?
Utilizo nginx como servidor frontal, he modificado los archivos CSS, pero nginx todavía sirve los antiguos.
Intenté reiniciar nginx, sin éxito y busqué en Google, pero no encontré una forma válida de borrarlo.
Algunos artículos dicen que podemos simplemente eliminar el directorio de caché:, var/cache/nginx
pero no existe dicho directorio en mi servidor.
¿Qué debería hacer ahora?
Tuve exactamente el mismo problema: estaba ejecutando mi nginx en Virtualbox. No tenía activado el almacenamiento en caché. Pero parece que estaba sendfile
activado y eso estaba causando el problema. @kolbyjack lo mencionó arriba en los comentarios.on
nginx.conf
Cuando lo apagué sendfile
, funcionó bien.
Esto es porque:
Sendfile se utiliza para 'copiar datos entre un descriptor de archivo y otro' y aparentemente tiene algunos problemas reales cuando se ejecuta en un entorno de máquina virtual, o al menos cuando se ejecuta a través de Virtualbox. Desactivar esta configuración en nginx hace que el archivo estático se entregue mediante un método diferente y sus cambios se reflejarán de inmediato y sin lugar a dudas.
Está relacionado con este error: https://www.virtualbox.org/ticket/12597
También puede omitir/volver a almacenar en caché archivo por archivo usando
proxy_cache_bypass $http_secret_header;
y como beneficio adicional, puede devolver este encabezado para ver si lo obtuvo del caché (devolverá 'HIT') o del servidor de contenido (devolverá 'BYPASS').
add_header X-Cache-Status $upstream_cache_status;
para caducar/actualizar el archivo en caché, use curl o cualquier cliente de descanso para realizar una solicitud a la página en caché.
curl http://abcdomain.com/mypage.html -s -I -H "secret-header:true"
esto devolverá una copia nueva del elemento y también reemplazará lo que está en caché.