Nginx - 如果 URL 有查询然后 运行 命令?
Nginx - If URL has query then run command?
我正在进行一个大型电子商务项目,供应商使用 NGINX 和 Varnish 设置。 PHP 也位于 OB 缓存层内,也有一些 memcache 规则。
我有一个开发人员面临的问题,即新上传到文件需要重新启动服务器或 PHP 上的某些命令才能 运行 看到这些文件 - 即使使用我们的方法也是不可能的dev/deploy 现场直播 - 总有一段时间我们需要快速清理。
我认为:
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 这不是我的问题。
location / {
# ...
if ($args ~ "flush=1") {
# do something
}
# ...
}
至于execute shell command
你可以试试lua-nginx-module.
content_by_lua 'os.execute("")';
我正在进行一个大型电子商务项目,供应商使用 NGINX 和 Varnish 设置。 PHP 也位于 OB 缓存层内,也有一些 memcache 规则。
我有一个开发人员面临的问题,即新上传到文件需要重新启动服务器或 PHP 上的某些命令才能 运行 看到这些文件 - 即使使用我们的方法也是不可能的dev/deploy 现场直播 - 总有一段时间我们需要快速清理。
我认为:
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 这不是我的问题。
location / {
# ...
if ($args ~ "flush=1") {
# do something
}
# ...
}
至于execute shell command
你可以试试lua-nginx-module.
content_by_lua 'os.execute("")';