Limpar cache do NGINX usando FTP

2

Eu tenho uma configuração de servidor NGINX para lidar com o armazenamento em cache de um site (em outro lugar).

Funciona como um charme, no entanto, queremos que os administradores tenham uma opção para liberar o cache de seu backoffice. Eu estava pensando em lidar com isso usando FTP, simplesmente removendo todos os arquivos do diretório de cache.

Eu configurei o armazenamento em cache assim:

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

No entanto, os arquivos são armazenados com permissões 700. Como posso dizer ao NGINX para também conceder permissões ao grupo (770)? Eu adicionaria o usuário de FTP que criei para esse grupo.

Qualquer outra sugestão para lidar com o flushing seria OK (eu leio thread no StackOverflow ). O backoffice está localizado em outro local, então eu teria que usar alguma tecnologia remota.

    
por Maarten Ureel 16.12.2013 / 11:06

1 resposta

2

Roubando Explicando as idéias de VBart e sendmoreinfo

Por favor, não use FTP inseguro, especialmente para fazer uma ação no diretório sensível à permissão. A alternativa é:

  1. Use o SSH com o usuário normal e conceda a permissão sudo a um script específico que esteja usando a limpeza do nginx-cache. Por exemplo, coloque este script em /opt/clear-cache.sh .

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

    Por segurança, não se esqueça de executar

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

    Em seguida, execute visudo para adicionar a linha abaixo em /etc/sudoers

    backofficeuser ALL=(root)  /opt/clear-cache.sh
    
  2. Use o cron para executar o script que verifica periodicamente a existência de flag-file . Este arquivo especial pode ser criado via FTP SSH (SFTP / SCP). Quando o flag-file existir, o script limpará o cache do nginx. O script de exemplo.

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

    Em seguida, adicione-o ao cron via sudo crontab -e

    * * * * * /path/to/myscript.sh
    
por 26.04.2015 / 08:05

Tags