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

时间:2014-09-22 09:27:55

标签: nginx webserver daemon docker

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

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

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

2 个答案:

答案 0 :(得分:49)

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

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

如果有Supervisor等第三方工具控制您的服务,设置daemon off;也很有用。主管允许您立即停止/开始/获取一组服务的状态。

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

答案 1 :(得分:9)

this SO thread中所述,似乎"初始进程立即生成一个主nginx进程和一些worker,然后退出。由于Docker只关注原始命令的PID,因此容器会停止。"

关于daemon off directive,它似乎最初用于nginx代码开发,但对FAQ版本1.0.9版本的生产是安全的。