У меня есть сервер 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). Бэк-офис находится в другом месте, поэтому мне придется использовать некоторые удаленные технологии.
Воровство Объясняя идеи из VBart и sendmoreinfo
Пожалуйста, не используйте небезопасный FTP, особенно для выполнения действий с директорией, зависящей от разрешений. Альтернатива:
Используйте SSH с обычным пользователем и дайте sudo
разрешение конкретному скрипту, который выполняет очистку nginx-кеша. Например, поместите этот скрипт в /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
. Этот специальный файл можно создать с помощью FTP SSH (SFTP / SCP). Когда flag-file
существует, то скрипт очистит nginx-cache. Пример скрипта.
#!/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