Назад | Перейти на главную страницу

Очистить кеш NGINX с помощью FTP

У меня есть сервер 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, особенно для выполнения действий с директорией, зависящей от разрешений. Альтернатива:

  1. Используйте 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
    
  2. Используйте 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