我有一个 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,尤其是在权限敏感的目录上执行操作时。替代方案是:
使用普通用户 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 运行脚本,定期检查 是否存在。此特殊文件可以通过
FTPSSH(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
然后通过以下方式将其添加到 cron
sudo crontab -e
* * * * * /path/to/myscript.sh