
У меня настроен сервер NGINX для обработки кэширования веб-сайта (работающего в другом месте).
Работает как по волшебству, однако мы хотим, чтобы администраторы имели возможность очищать кэш из своего бэк-офиса. Я думал обработать это с помощью FTP, просто удалив все файлы из каталога кэша.
Я настроил кэширование следующим образом:
proxy_cache_path /var/cache/nginx/my_site levels=1:2 keys_zone=MY_SITE:8m max_size=2048m inactive=720m;
Однако файлы хранятся с разрешениями 700. Как мне сказать NGINX также дать разрешения группе (770)? Я бы добавил созданного мной пользователя FTP в эту группу.
Любое другое предложение по промывке было бы приемлемым (я прочиталветка на StackOverflow). Бэк-офис находится в другом месте, поэтому мне придется использовать некоторые удаленные технологии.
решение1
Кража Объяснение идей изVБарти отправитьбольшеинформации
Пожалуйста, не используйте небезопасный FTP, особенно для выполнения действий в каталоге, чувствительном к разрешениям. Альтернатива:
Используйте SSH с обычным пользователем и дайте
sudo
разрешение определенному скрипту, который выполняет очистку nginx-cache. Например, поместите этот скрипт в/opt/clear-cache.sh
.#!/bin/sh rm -rf /path/to/nginx-cache
Для безопасности не забудьте запустить
chown root:root h/opt/clear-cache.sh && chmod 700 /opt/clear-cache.sh
Затем переходите
visudo
к добавлению следующей строки в/etc/sudoers
backofficeuser ALL=(root) /opt/clear-cache.sh
Используйте cron для запуска скрипта, который периодически проверяет наличие
flag-file
. Этот специальный файл можно создать черезFTPSSH (SFTP/SCP). Когдаflag-file
существует, скрипт очистит кэш nginx. Пример скрипта.#!/bin/sh FILE=/path/to/special/file if [ ! -f $FILE ] then rm $FILE rm -rf /path/to/nginx/cache/* fi
Затем добавьте его в cron через
sudo crontab -e
* * * * * /path/to/myscript.sh