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

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

作为root用户,我可以运行nginx -c file.conf因为这几乎是我想要的; 然而,启用网站的conf文件似乎在nginx启动时在其他一些已定义的上下文中运行,因为运行该命令时总会遇到以下错误:

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

我怎样才能dynamic运行这个新的conf文件?

 $ 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; } } 

我正在使用自签名证书。

运行以下命令:

 /etc/init.d/nginx reload 

(或者更新的debian / ubuntu):

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

所以你可以使用OS独立的命令:

 nginx -s reload 

服务nginx重新加载

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

查找主进程的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