nginx reload时会产生502的问题排查

lishengyu 193 0

我们都知道,在做nginx反代的时候,日志需要在凌晨做切割,按照每天的日期进行日志生成,最近在生产环境上完长连接后,发现在对端nginx进行reload的时候,在凌晨出现了少许的502
原因是因为,在配置nginx upstream的时候,配置为

check interval=2000 rise=2 fall=3 timeout=1000

在upstream check的模块中,有一个参数定义:
default_down: 设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
解决办法是:
(1)一般默认是true,这里需要改成false,避免在对端nginx进行日志切割的时候,reload导致的短暂502,配置文件中添加 default_down=false;

#对http主动检测,2XX,3XX为up,4XX,5xx为down
check interval=3000 rise=2 fall=5 timeout=1000 type=http default_down=false;
check_http_send "HEAD http://xxxxxxx/ HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;

(2)修改切割脚本命令nginx -s reopen

 

 

发表评论 取消回复
表情 图片 链接 代码

分享