Dynamic nginx configuration without reloading
Maxim Dounin
mdounin at mdounin.ru
Mon Jan 1 20:58:03 UTC 2018
Hello!
On Mon, Jan 01, 2018 at 12:07:04AM -0600, House Lee wrote:
> We are currently building a shared hosting platform for parts of
> our clients. We are using nginx as our web servers running on
> the nodes.
>
> Everything works fine. However, we discovered that when we are
> hosting more than a certain amount of sites (typically around
> 300 conf files), reloading nginx conf is extremely slow.
>
> Is there a way to dynamically configure nginx (e.g.
> adding/removing server blocks) without reloading nginx?
Short answer:
No.
Long answer:
There are ways to do limited reconfiguration without reloading,
notably the API module[1], available as part of our commercial
subscription. It won't, however, allow to add or remove server{}
blocks.
That is, to add or remove server{} blocks you have to do a
configuration reload. Note though, that in many cases you can
actually avoid adding or removing server{} blocks. Multiple
identical or slightly different sites can be handled using a
single server{} block with multiple server names.
Note well that 300 looks a way too low for "extremely slow",
you may want to check what actually makes it so slow. In
particular, make sure that:
- you do have enough memory, as reload creates a new set of
worker processes and this more or less doubles memory used by
nginx;
- you don't have problems with DNS and/or no names are used in a
configuration. Slow DNS can easily make loading a
configuration with multiple names extremely slow due to blocking
DNS lookups during configuration parsing.
[1] http://nginx.org/en/docs/http/ngx_http_api_module.html
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx
mailing list