daemon off in production

Maxim Dounin mdounin at mdounin.ru
Sat Sep 17 10:30:29 UTC 2011


Hello!

On Sat, Sep 17, 2011 at 07:40:19AM +0300, Yaniv Aknin wrote:

> Hi,
> 
> The documentations says I should never run nginx with the daemon off setting
> in production. I would like to do so anyway so my Python/twisted based
> process manager will have an easier time knowing if nginx terminated or not
> (I know there are other ways to do it, but this seems like the easiest; if
> I'll be forced to, I'll use another way).
> 
> I'm aware of SIGWINCH and nginx in general and especially after version
> 1.1.1, and I don't mind taking care of guaranteeing nginx will run without a
> controlling terminal (I will fork()/setsid() before exec()ing it), run in a
> sensible current working directory, etc. I just don't want it to do the
> daemonizing double fork.
> 
> From skimming the code, it appears to me that nothing bad should happen.
> What am I missing? Why is it so bad to run nginx in the foreground in
> production?

Documentation[1] says "daemon" is generally used for development, 
it doesn't say it shouldn't be used in production.  It's safe to 
run with "daemon off;" if you use some controlling process 
manager.  Note that you don't really need to setsid(), nginx will 
take care of this even with "daemon off;".

Please don't confuse with "master_process off;".  It's *unsafe* to 
run with "master_process off;" and it's *only* used for 
development.

[1] http://sysoev.ru/nginx/docs/ngx_core_module.html#daemon

Maxim Dounin



More information about the nginx mailing list