确保nginx主进程保持运行

时间:2015-06-12 16:12:25

标签: nginx docker supervisord

我目前正在尝试使用ubuntu设置一个docker容器:14.04作为我的基本映像,其中运行了nginx和gunicorn / django / celery。我正在使用主管启动所有过程,并进行了测试,以确保gunicorn在发生故障时重新启动。但是,我无法弄清楚如何使用nginx。

我对nginx的supervisord.conf如下:

[program:nginx]
command=nginx
autorestart=false

我将autorestart设置为false,因为从我所知道的,nginx命令只是启动主进程和工作进程,然后以状态代码0退出。如果我将autorestart设置为true,它只是继续尝试重新启动nginx命令,这将导致后续重试失败,因为主/工作进程已在运行并绑定到端口。

从表面上看,这似乎没问题,因为如果我尝试杀死一个工人进程,那么主人将启动另一个工人来取代它。但是,我如何确保主进程保持运行?

1 个答案:

答案 0 :(得分:2)

您需要将daemon off;附加到nginx.conf配置,指示nginx在前台运行。

然后将您的主管节修改为:

[program:nginx]
command=nginx
autorestart=true

它仍然会产生主/工作进程/子进程,并且可以在生产设置中以这种方式使用。在这种情况下,它的主管在后台运行该流程并控制和监督它。

请参阅此FAQ entry