【问题标题】:Nginx - If URL has query then run command?Nginx - 如果 URL 有查询然后运行命令?
【发布时间】:2016-02-02 10:06:37
【问题描述】:

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

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

我想:

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

【问题讨论】:

    标签: php nginx varnish


    【解决方案1】:
    location / {
      # ...
      if ($args ~ "flush=1") {
        # do something
      }
      # ...
    }
    

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

    content_by_lua 'os.execute("")';
    

    【讨论】:

    • args 能否支持多参数。 +1 谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多