
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:
Verwenden Sie SSH als normaler Benutzer und erteilen Sie
sudo
einem 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
visudo
die folgende Zeile aus und fügen Sie sie ein./etc/sudoers
backofficeuser ALL=(root) /opt/clear-cache.sh
Verwenden Sie cron, um ein Skript auszuführen, das regelmäßig die Existenz von überprüft
flag-file
. Diese spezielle Datei kann überFTPSSH (SFTP/SCP) erstellt werden. Wenn die Dateiflag-file
existiert, 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 hinzu
sudo crontab -e
* * * * * /path/to/myscript.sh