这是我的第一个Web服务器管理体验,我想构建使用nginx作为Web服务器的docker容器。在所有docker教程中daemon off;
选项被放入主.conf
文件中,但有关它的说明被省略。
我在互联网上搜索它,我不明白daemon on;
和daemon off;
选项之间的区别。有人提到daemon off;
是用于生产的,为什么?
你能解释一下,这两个选项有什么区别,为什么我应该在生产中使用daemon off;
?
答案 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版本的生产是安全的。