批量清除Nginx缓存的方法

澳门新葡亰网站注册 1

转:

我公司的一个客户在国外访问测试网站比较麻烦,因此我在一台机器上安装了一个nginx,并且使用nginx的proxy_cache模块做缓存服务器,由于由于修改比较多,每次使用ngx_cache_purge清除cache只能清除几个url,没有很好的办法去清除某个目录的缓存。我研究了nginx的缓存文件格式,发现可以从中提取出url出来,如下图所示,url是以”KEY:”开头以0x0A结尾

原本在本机开发PHP的时候,Shell调用一切正常。上线的时候才反应到线上的服务器对权限做了严格的控制,一顿折腾之后梳理出在严格权限控制的Linux上如何通过Nginx/Apache
以Web的方式调用Shell命令,比如调用java编译或者执行java程序。

澳门新葡亰网站注册 1

Web服务器使用www用户启动。分为两种情况:一种是命令是通过root安装的,并不能直接把权限直接赋给www用户,比如/usr/local/nginx/sbin/nginx;一种是www用户对要执行的命令有绝对的权限,但是由于缺少某些环境变量,执行的程序如果用到了这些变量就得提前再次设定环境变量。

我写了一个程序能够实现

先说第一种,其实php.ini里面已经定义了不可以调用的命令,默认情况下exec,
system之类都不能执行。首先要去php.ini里面把

1.提交一批url进行清除对应的cache

disable_functions=

2.提交一批url目录可以清除包含这些目录的url,若是提交域名可以清除整站

这一项里面定义的那些调用Shell脚本的函数移出列表,然后重启Nginx的PHP-PFM或者Apache。可以测试一下

3.查看某个目录下的缓存文件是否缓存上

<?php echo exec(“pwd”); ?>

4.可以添加多个站点

正常情况下应该就可以看到当前的路径信息了。但是要想执行一些root才能执行的命令,比如重新加载Nginx配置文件,还需要一些额外的操作,这里参考

需要县安装ngx_澳门新葡亰网站注册,cache_purge