nginx 守护进程开/关选项有啥区别?

Posted

技术标签:

【中文标题】nginx 守护进程开/关选项有啥区别?【英文标题】:What is the difference between nginx daemon on/off option?nginx 守护进程开/关选项有什么区别? 【发布时间】:2014-11-16 05:17:14 【问题描述】:

这是我的第一次网络服务器管理经验,我想构建使用 nginx 作为网络服务器的 docker 容器。在所有 docker 教程中,daemon off; 选项被放入主 .conf 文件中,但省略了有关它的解释。

我在互联网上搜索它,但我不明白daemon on;daemon off; 选项之间有什么区别。有人提到daemon off;是用于生产的,为什么?

你能解释一下,这两个选项有什么区别,为什么我应该在生产中使用daemon off;

【问题讨论】:

【参考方案1】:

正如this SO thread 中提到的,似乎“该初始进程立即产生了一个主 nginx 进程和一些工作人员,然后退出。由于 Docker 只监视原始命令的 PID,因此容器随后停止。”

关于daemon off directive,根据FAQ,它似乎最初是为 nginx 代码开发而设计的,但对于生产发布版本 1.0.9 来说是安全的。

【讨论】:

【参考方案2】:

对于正常生产(在服务器上),使用默认的daemon on; 指令,这样 Nginx 服务器将在后台启动。以这种方式,Nginx 和其他服务正在运行并相互交谈。一台服务器运行许多服务。

对于 Docker 容器(或调试),daemon off; 指令告诉 Nginx 留在前台。对于容器,这很有用,因为最佳实践是一个容器 = 一个进程。一台服务器(容器)只有一项服务。

如果有像Supervisor 这样的第三方工具控制您的服务,设置daemon off; 也很有用。 Supervisor 允许您一次停止/启动/获取一组服务的状态。

我使用daemon off; 来调整我的 Nginx 配置,然后彻底终止服务并重新启动它。这让我可以快速测试配置。完成后,我使用默认的daemon on;

【讨论】:

如何在 docker 上动态重新加载配置为“daemon off”的 nginx? 这似乎是正确的答案,应该打勾。

以上是关于nginx 守护进程开/关选项有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

关于守护进程和守护线程的区别

守护进程与守护线程的区别

守护进程(了解)

python 并发编程 多线程 守护线程

python 守护进程

Nginx 守护进程停止失败