在配置文件中进行更改后,正常重启Nginx Web服务器

时间:2020-01-09 10:40:46  来源:igfitidea点击:

如何使nginx.conf的更改生效。
如何正常重启Nginx Web服务器?
如何在不重启Nginx服务器本身而不中断用户当前会话的情况下,对Nginx服务器配置文件进行更改以使其生效?

Nginx是一个免费的开源Web服务器,可以在Linux和类似Unix的系统上运行。

Nginx是用于静态和动态工作负载的非常快速和轻量级的服务器。
本教程显示配置更改后如何正常重启Nginx Web服务器。

如何正常重启Nginx服务

对于具有systemd的GNU/Linux,语法如下:

sudo systemctl reload nginx

对于具有sysv init的旧版Linux发行版,请尝试使用service命令:

sudo service nginx reload

当执行reload选项时,主Nginx进程将关闭子进程,加载新配置,并启动新的子进程,而不会干扰操作。
因此,我们更喜欢重载而不是重新启动。
换句话说,请勿使用以下任何Linux命令来正常重启:

sudo systemctl restart nginx

或者

sudo service nginx restart

优雅地重启Nginx Web服务器

Nginx主进程可以处理以下信号:

  • TERM,INT:快速关机
  • QUIT:正常关机
  • KILL:停止一个顽固的过程
  • HUP:重新加载配置。使用新的配置启动新的工作进程。正常关闭旧工作进程
  • USR1:重新打开日志文件
  • USR2:即时升级可执行
  • WINCH:正常关闭工作进程

通用语法,可以在Linux或类似Unix的系统上正常重启Nginx

以root用户身份尝试以下kill命令和cat命令的组合:

sudo kill -HUP $( cat /path/to/nginx.pid )

可以使用pgrep commandor或ps命令找到nginx pid,如下所示:

pgrep nginx
ps aux | grep [n]ginx

输出示例:

root      4333  0.0  0.4  70776  9352 ?        Ss   Nov24   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     9921  1.0  0.5  70776  9888 ?        S    Dec05  19:24 nginx: worker process      
nginx     9922  1.0  0.5  70776 10240 ?        S    Dec05  19:42 nginx: worker process      
nginx     9923  0.0  0.4  70776  8724 ?        S    Dec05   0:00 nginx: cache manager process

接下来,以root用户身份执行以下命令:

kill -HUP 4333 
sudo kill -HUP 4333

如果您使用的是Nginx版本0.7.53+

最新版本的Nginx使得在Unix和Linux上正常重载和重新启动Web服务变得非常容易。
您要做的就是传递-s reload选项:

# nginx -s reload

或者

# /usr/local/nginx/sbin -s reload

Debian/CentOS/RHEL/Fedora/Ubuntu Linux试用

# /etc/init.d/nginx reload

FreeBSD用户

# /usr/local/etc/rc.d/nginx reload

OpenBSD用户

# /usr/sbin/nginx -s reload

或者

# /etc/rc.d/nginx reload

如何重新加载/正常重启chroot的Nginx服务器?

执行以下命令:

# /usr/sbin/chroot /jail /usr/local/nginx/sbin/nginx -s reload

如何在Docker或LXD容器中重新加载Nginx

Docker的语法如下:

docker container exec {container_name_here} nginx -s reload

或者

docker kill -s HUP {container_name_here}

LXD用户可以执行以下命令:

lxc exec {container_name_here} -- nginx -t reload