nginx:如何在不重启 nginx 的情况下加载新的 conf 文件

nginx:如何在不重启 nginx 的情况下加载新的 conf 文件

我在 sites-available 中创建了一个新的 conf 文件(并将其链接到 sites-enabled 中),现在我想在不重置 nginx 服务器的情况下“安装”该 conf 文件。

nginx -c file.conf以 root身份运行几乎按照我的要求做;但是,当 nginx 启动时,sites-enabled 中的 conf 文件似乎在其他定义的上下文中运行,因为我在运行该命令时总是出现以下错误:

$ nginx -c /etc/nginx/sites-available/alpha
2010/09/30 02:32:13 [emerg] 31769#0: unknown directive "server" in sites-available/alpha:1

我如何动态运行这个新的配置文件?

$ nginx -v
nginx version: nginx/0.6.32
$ cat /etc/issue
Debian GNU/Linux squeeze/sid
$ cat /etc/nginx/sites-available/alpha
server {
    listen   443;
    server_name  XXX.net;

    ssl  on;
    ssl_certificate      /etc/nginx/certificates/server.crt;
    ssl_certificate_key  /etc/nginx/certificates/server.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass   http://127.0.0.1:1338;
    }
}

我正在使用自签名证书。

答案1

运行以下命令:

/etc/init.d/nginx reload

(或者,在较新的 debian/ubuntu 上):

service nginx reload

答案2

RABBITZ# nginx -h
...snip...
 -s signal     : send signal to a master process: stop, quit, reopen, reload
...snip...

因此您可以使用独立于操作系统的命令:

nginx -s reload

答案3

服务 nginx 重新加载

请记住,重新加载是任何应用配置的一种优雅方式。使用重新加载更为合适,因为它不会导致任何停机时间(重新启动会导致几毫秒的停机时间,因为它必须停止然后重新启动)。

答案4

查找主进程的 PID:

ps aux | grep nginx
root     22041  0.0  0.2   4808   684 ?        Ss   08:14   0:00 nginx: master process /usr/sbin/nginx
www-data 22042  0.0  0.4   4976  1044 ?        S    08:14   0:00 nginx: worker process
root     22044  0.0  0.3   3344   812 pts/1    S+   08:14   0:00 grep --color=auto nginx

并发送 HUP:

kill -HUP 22042

相关内容