Leeren Sie den NGINX-Cache mithilfe von FTP

Leeren Sie den NGINX-Cache mithilfe von FTP

Ich habe einen NGINX-Server eingerichtet, um das Caching für eine (anderswo ausgeführte) Website zu handhaben.

Funktioniert einwandfrei, wir möchten jedoch, dass Administratoren die Möglichkeit haben, den Cache von ihrem Backoffice aus zu leeren. Ich dachte daran, dies per FTP zu erledigen, indem ich einfach alle Dateien aus dem Cache-Verzeichnis entferne.

Ich habe das Caching folgendermaßen eingerichtet:

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

Die Dateien sind jedoch mit der Berechtigung 700 gespeichert. Wie kann ich NGINX anweisen, der Gruppe (770) auch Berechtigungen zu erteilen? Ich würde dann den von mir erstellten FTP-Benutzer zu dieser Gruppe hinzufügen.

Jeder andere Vorschlag zur Handhabung der Spülung wäre OK (ich habe gelesender Thread auf StackOverflow). Das Backoffice befindet sich an einem anderen Standort, daher müsste ich Remote-Technologie verwenden.

Antwort1

Stehlen Erklären der Ideen vonVBartUnd Mehr Infos senden

Bitte verwenden Sie kein unsicheres FTP, insbesondere nicht, wenn Sie eine Aktion in einem Verzeichnis ausführen, das für Berechtigungen empfindlich ist. Die Alternative ist:

  1. Verwenden Sie SSH als normaler Benutzer und erteilen Sie sudoeinem bestimmten Skript die Berechtigung, den Nginx-Cache zu leeren. Fügen Sie dieses Skript beispielsweise ein /opt/clear-cache.sh.

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

    Vergessen Sie aus Sicherheitsgründen nicht,

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

    Führen Sie dann visudodie folgende Zeile aus und fügen Sie sie ein./etc/sudoers

    backofficeuser ALL=(root)  /opt/clear-cache.sh
    
  2. Verwenden Sie cron, um ein Skript auszuführen, das regelmäßig die Existenz von überprüft flag-file. Diese spezielle Datei kann über FTP SSH (SFTP/SCP) erstellt werden. Wenn die Datei flag-fileexistiert, löscht das Skript den Nginx-Cache. Das Beispielskript.

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

    Fügen Sie es dann über cron hinzusudo crontab -e

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

verwandte Informationen