Borrar caché NGINX usando FTP

Borrar caché NGINX usando FTP

Tengo un servidor NGINX configurado para manejar el almacenamiento en caché de un sitio web (que se ejecuta en otro lugar).

Funciona de maravilla, sin embargo, queremos que los administradores tengan la opción de vaciar el caché de su backoffice. Estaba pensando en manejar esto usando FTP, simplemente eliminando todos los archivos del directorio de caché.

He configurado el almacenamiento en caché de esta manera:

proxy_cache_path /var/cache/nginx/my_site levels=1:2 keys_zone=MY_SITE:8m max_size=2048m inactive=720m;

Sin embargo, los archivos se almacenan con permisos 700. ¿Cómo puedo decirle a NGINX que también otorgue permisos al grupo (770)? Entonces agregaría el usuario FTP que creé a ese grupo.

Cualquier otra sugerencia para manejar el lavado estaría bien (he leídoel hilo en StackOverflow). La oficina administrativa está ubicada en otra ubicación, por lo que tendría que usar alguna tecnología remota.

Respuesta1

Robar Explicar las ideas deVbarty enviarmásinfo

No utilice FTP inseguro, especialmente para realizar una acción en un directorio sensible a permisos. La alternativa es:

  1. Utilice SSH con un usuario normal y otorgue sudopermiso a un script en particular que realice la limpieza de caché de nginx. Por ejemplo, coloque este script en /opt/clear-cache.sh.

    #!/bin/sh
    rm -rf /path/to/nginx-cache
    

    Por seguridad, no olvides ejecutar

    chown root:root h/opt/clear-cache.sh && chmod 700 /opt/clear-cache.sh
    

    Luego ejecute visudoagregar la siguiente línea en/etc/sudoers

    backofficeuser ALL=(root)  /opt/clear-cache.sh
    
  2. Utilice cron para ejecutar un script que compruebe periódicamente la existencia de flag-file. Este archivo especial se puede crear a través de FTP SSH (SFTP/SCP). Cuando flag-fileexista, el script borrará el caché nginx. El guión de ejemplo.

    #!/bin/sh
    
    FILE=/path/to/special/file
    
    if [ ! -f $FILE ]
    then
        rm $FILE
        rm -rf /path/to/nginx/cache/*
    fi
    

    Luego agréguelo a cron a través desudo crontab -e

    * * * * * /path/to/myscript.sh
    

información relacionada