Vil*_*ila 8 automation maintenance deployment nginx
我正在寻找一种解决方案来自动化我们应用程序的部署过程之一。在部署开始时,我想以编程方式将指定的服务器设置为维护模式,最后在部署完成后,从 nginx 服务器中删除维护模式标志。
通过维护模式,我的意思是 nginx 应该以 HTTP 响应代码 503 响应所有请求(可能带有自定义页面)。
我知道如何设置服务器块以响应 503 代码(请参阅http://www.cyberciti.biz/faq/custom-nginx-maintenance-page-with-http503/)但问题是如何以编程方式执行此操作并且最有效。
我想到了两个选择:
选项1:在部署过程开始时,将维护文件写入文档根目录,并有条件地检查nginx服务器配置中是否存在维护文件:
server {
if (-f $document_root/in_maintenance_mode) {
return 503;
}
}
Run Code Online (Sandbox Code Playgroud)
此方法包含一定的开销,因为每个请求都会检查文件是否存在。是否可以仅在加载 nginx 配置时检查文件是否存在?
选项 2:部署脚本用维护版本替换整个 nginx 服务器配置文件,并在部署结束时将其换回。如果使用此方法,我担心可能会覆盖维护配置文件的其他自动化进程,例如 puppet。
选项 1 是最佳选择。如果额外的文件请求打扰您(尽管其中几乎没有开销),您可以将其替换为变量检查:
set $maintenance "on";
if ($maintenance = "on") {
return 503;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2353 次 |
最近记录: |