
Eu tenho um servidor NGINX configurado para lidar com o cache de um site (em execução em outro lugar).
Funciona perfeitamente, mas queremos que os administradores tenham a opção de 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 cache assim:
proxy_cache_path /var/cache/nginx/my_site levels=1:2 keys_zone=MY_SITE:8m max_size=2048m inactive=720m;
Porém 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 FTP que criei a esse grupo.
Qualquer outra sugestão para lidar com a descarga seria OK (eu lio tópico no StackOverflow). O backoffice está localizado em outro local, então eu teria que usar alguma tecnologia remota.
Responder1
Roubar Explicando as ideias deVBarte enviar mais informações
Por favor, não use FTP inseguro, especialmente para executar uma ação em diretórios sensíveis a permissões. A alternativa é:
Use SSH com usuário normal e dê
sudo
permissão a um script específico que esteja limpando o 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/etc/sudoers
backofficeuser ALL=(root) /opt/clear-cache.sh
Use cron para executar script que verifica periodicamente a existência de arquivos
flag-file
. Este arquivo especial pode ser criado viaFTPSSH (SFTP/SCP). Quandoflag-file
existir, o script limpará o cache 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