Nginx - 如果 URL 有查询,则运行命令


Nginx - If URL has query then run command?

我有一个大型电子商务项目,供应商使用NGINX和Varnish设置。PHP也位于OB缓存层中,也有一些memcache规则。

我有一个问题,开发人员面临的问题是,新上传到文件需要重新启动服务器或运行 PHP 上的某些命令才能查看这些文件 - 即使使用我们的开发/部署到实时站点也是不可能的 - 总有一段时间我们需要快速清除。

我以为:

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规则是什么,我可以在我的虚拟文件中执行这些SSH命令吗?我知道IfIsEvil这不是我的问题。

location / {
  # ...
  if ($args ~ "flush=1") {
    # do something
  }
  # ...
}

至于execute shell command你可以试试lua-nginx-module。

content_by_lua 'os.execute("")';