首页 > 代码库 > Nginx实用教程(一):启动、停止、重载配置

Nginx实用教程(一):启动、停止、重载配置

Nginx是一个功能强大的web服务器和负载均衡软件,由俄罗斯人开发。Nginx包括一个master进程和数个worker进程,master进程用于读取、解析配置文件和管理worker进程,worker进程实际处理请求。nginx实现了基于事件的模型和操作系统机制驱动的请求分发。

Nginx的各种功能以模块(module)的形式提供,只有在编译安装时可以选择安装或不安装哪些模块,在源码编译后,或通过linux软件管理包工具安装nginx,不能再加载或去除模块。

可以用 nginx -V 命令来查看配置目录和prefix目录,配置文件可以在编译时单独指定,也可以在启动时指定,如果没有指定配置文件,那么默认配置文件为prefix目录下的conf/nginx.conf。例如,prefix目录为“/usr/local/nginx”,没有指定配置文件,那么默认情况,nginx的配置文件是“/usr/local/conf/nginx.conf”。

yum或者apt-get软件包管理工具安装的,配置文件通常是/etc/nginx/nginx.conf。

启动

直接运行nginx可执行文件即可启动,nginx会自动读取配置文件目录下的“nginx.conf”配置文件,也可以在后面接“-c”参数来指定配置文件:

nginx -c /path/to/configfile

由于nginx的配置文件比较复杂容易出错,修改配置后可以用“-t”参数来校验配置文件是否正确:

nginx -t    # 校验默认的配置文件
nginx -t -c /path/to/configfile    # 校验指定配置文件

-T参数除了校验配置文件外,还同时将完整的配置文件打印到标准输出(1.9.2以后版本支持)。

-g directives:设置全局指令,优先级高于配置文件。

-p prefix:制定prefix目录,默认是/usr/local/nginx。

停止和重载

当nginx启动后,可以使用“-s”参数向nginx管理进程发送信号来控制nginx:

nginx -s signal

其中,signal可以是以下值:

  • stop:快速关闭
  • quit:安全关闭
  • reload:重载配置文件
  • reopen:重新打开一个log文件,用于日志切割

quit信号通知nginx等待worker进程处理完当前的请求后退出,此命令只能由启动nginx的linux账户来执行。

reload信号通知nginx重新载入配置文件,除了实用reload外,nginx只会在启动时载入一次配置文件,之后对配置文件的修改不会对已经运行的nginx进程生效。当运行这个命令时,master进程会尝试读取配置文件,如果配置文件没有问题,master进程会启动新的worker进程来运行新的配置文件并处理请求,并且通知老的worker进程不再处理新的请求并在处理完当前任务后退出。如果配置文件存在问题不能执行,master进程会回退老配置文件继续工作,不会导致nginx进程整个异常退出。

linux的kill命令也可以达到相同的作用,我们假设nginx的master进程号(pid)是1234,那么 kill -s QUIT 1234 和 kill -s HUP 1234 这两条命令和前面quit、reload的作用相同。

master进程的pid保存在pid文件中,如果编译时没有指定,那么默认的pid文件位于prefix目录下logs文件夹中,即“prefix/logs/nginx.pid”,prefix目录的问题请看文章前部。

 

以上内容大部分翻译自nginx官方文档http://nginx.org/en/docs/

 果觉得本文对您有帮助,请扫描后面的二维码给予捐赠,您的支持是作者继续写出更好文章的动力!

技术分享

Nginx实用教程(一):启动、停止、重载配置