使用 FTP 清除 NGINX 缓存

使用 FTP 清除 NGINX 缓存

我有一个 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

窃取解释的想法维巴特发送更多信息

请不要使用不安全的 FTP,尤其是在权限敏感的目录上执行操作时。替代方案是:

  1. 使用普通用户 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
    
  2. 使用 cron 运行脚本,定期检查 是否存在。此特殊文件可以通过FTP SSH(SFTP/SCP)flag-file创建。当存在时,脚本将清除 nginx 缓存。示例脚本。flag-file

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

    然后通过以下方式将其添加到 cronsudo crontab -e

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

相关内容