今天在群里讨论到一个问题就是:如果在nginx运行期间,修改了配置文件,这个时候是重启nginx还是有别的办法呢?对nginx比较熟的童鞋,脑子立马肯定会有答案。执行下面的命令就好了
./nginx -s reload
那么nginx是怎么处理reload的呢?是像squid那样停止所有的任务后再重读配置文件还是别的处理呢?nginx是不需要停止服务去读取配置文件的,下面来看nginx具体的处理。
nginx启动的时候都是会解析命令行参数的,也就是下面的函数:
static ngx_int_t
ngx_get_options(int argc, char *const *argv)
{
......
case 's':
if (*p) {
ngx_signal = (char *) p;
} else if (argv[++i]) {
ngx_signal = argv[i];
} else {
ngx_log_stderr(0, "option \"-s\" requires parameter");
return NGX_ERROR;
}
if (ngx_strcmp(ngx_signal, "stop") == 0
|| ngx_strcmp(ngx_signal, "quit"