首页 > 解决方案 > 蓝/绿部署的零停机 nginx 动态重新加载

问题描述

在蓝绿部署管道的上下文中,nginx-template.conf当前使用以下模板文件:

http {
    server {
        listen 8080;

        location / {
            proxy_pass http://0.0.0.0:{{ api_port }};
        }
    }
}

部署新版本的 API 时,nginx.conf会通过替换{{ api_port }}为新的端口值来生成新版本。6000端口值在和之间交替6001

6000  ---->  (deploy) 6001  ---->  (deploy) 6000  ---->  (deploy) 6001  ---->  ...

生成新nginx.conf文件后,停止旧nginx进程并启动新进程:

sudo nginx -s quit -c nginx-old.conf
sudo nginx -c nginx-new.conf

这很有效,但需要半秒的停机时间,在此期间无法处理新请求。

为了消除停机时间,我尝试使用reloadnginx 代替:

sudo nginx -s reload -c nginx-new.conf

但是由于某种原因,这不会应用新配置,并且nginx仍然使用旧配置运行,就好像没有reload执行过一样。

标签: nginxblue-green-deployment

解决方案


推荐阅读