我有一个正在处理的大型电子商务项目,供应商使用Nginx和Varnish设置. PHP也位于OB缓存层中,并且也有一些内存缓存规则.
我遇到一个问题,开发人员面临着新上传到文件的问题,需要重新启动服务器或运行PHP上的某些命令才能查看这些文件-即使使用我们的dev / deploy上线网站也无法实现-总是有一段时间我们需要快速清除.
我想:
www.site.com/category/mens/?flush=1
www.site.com/pages/about/?flush=1
如果刷新参数被触发,那么我想运行
PHP restart
varnish restart
memcache restart
我刚在想
location = / {
if ( query[flush]==1 ) { // pseudo code as I don't know Nginx formatting
#service PHP-fpm reload;
#service varnish restart
}
}
这有可能吗?如果是这样的话,Nginx的规则是什么,我可以在我的vhost文件中执行那些SSH命令.我知道IfIsEvil这不是我的问题.
最佳答案
location / {
# ...
if ($args ~ "flush=1") {
# do something
}
# ...
}
至于执行外壳命令,您可以尝试lua-nginx-module.
content_by_lua 'os.execute("")';