nginx加入监听域套接字之后,通过发送QUIT信号退出导致nginx不会清理域套接字文件,重启nginx时出现bind() address already in use
复现原因:
pkill -SIGQUIT nginx
nginx -s quit
以上两条命令都会产生SIGUQUIT信号

{/collapse-item}
{collapse-item label="问题原因" open}
1.nginx SIGQUIT_将导致“优雅关闭”,而_SIGTERM_将导致“快速关闭”。如果将_SIGQUIT_发送到Nginx,它将留下使用_listen_指令创建的过时的UNIX域套接字文件。如果 Nginx 启动时有任何过时的 UNIX 域套接字文件,它将无法侦听套接字,因为它已经存在。但是,如果您使用 _SIGTERM,_UNIX 域套接字文件将被正确删除
2.官方针对这个bug在两年前进行了修复
git fix


测试修复后版本的nginx,并未出现该情况
{/collapse-item}
评论 (0)