Nginx - 如果URL有查询然后运行命令?

时间:2016-02-02 10:06:37

标签: php nginx varnish

我正在开展一个大型电子商务项目,供应商使用NGINX和Varnish设置。 PHP也位于OB缓存层内,并且还有一些内存缓存规则。

我遇到一个问题,开发人员面临新的文件上传需要重新启动服务器或运行PHP上的某些命令来查看这些文件 - 即使使用我们的dev / deploy to live site也是如此 - 这是我们总是需要快速清洗。

我想:

www.site.com/category/mens/?flush=1
www.site.com/pages/about/?flush=1

如果触发了flush参数,那么我想运行

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不是我的问题。

1 个答案:

答案 0 :(得分:3)

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

至于execute shell command,您可以尝试lua-nginx-module

content_by_lua 'os.execute("")';