nginx - 蓝/绿部署的零停机 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
这很有效,但需要半秒的停机时间,在此期间无法处理新请求。
为了消除停机时间,我尝试使用reload
nginx 代替:
sudo nginx -s reload -c nginx-new.conf
但是由于某种原因,这不会应用新配置,并且nginx
仍然使用旧配置运行,就好像没有reload
执行过一样。
- 有没有办法在不停机的情况下重新加载 nginx 并考虑新配置?
- 或者,是否有可能通过不同的方法达到预期的结果?
解决方案
推荐阅读
- css - 所有网络浏览器和移动设备都支持的字体
- angular - 用于 Angular 7 的谷歌云应用程序 yaml
- aws-lambda - 如何从 SQS 触发器中获取单条记录?
- amazon-web-services - 将 pem 私有密钥添加到 AWS KMS
- reactjs - 如何在 React 4 应用程序中使用 bootstrap.min.js
- react-native - 如果他们在一段时间内处于空闲或不活动状态,则对本机注销用户做出反应
- regex - 如何使用正则表达式模式拆分此模式中的句子
- regex - 如何根据字符位置查找具有条件的行?
- office365 - 是否可以将成员添加到对其 SharePoint 网站具有读取权限的 office 365 组
- postgresql - 在字符变化字段上使用分组时查询慢