(1) 默认方式启动nginx
nginx
因为配置好了环境变量,系统能够通过PATH中的路径找到nginx的二进制可执行文件,执行时,读取默认路径下的配置文件,即/usr/local/nginx/conf目录
(2) 另行指定配置文件的启动方式,使用 -c 选项
nginx -c /tmp/nginx.conf,nginx启动时,通过读取/tmp/nginx.conf配置文件来启动nginx
(3) 另行指定全局配置项的启动方式,使用 -g 选项
nginx -g “pid /var/nginx/test.pid;”,nginx启动后会将pid写入/var/nginx/test.pid 文件中
-g 选项的约束条件是指定的配置文件参数不能与默认路径下的nginx.conf配置文件参数相冲突,否则无法启动,比如:pid logs/nginx.conf 这样的配置,是不能存在于默认的配置文件nginx.conf中的
另一个约束条件是,以-g 选项启动的nginx服务,执行其他命令时,需要把 -g 参数也带上,否则可能出现配置项不匹配的情况,比如停止 nginx 服务
nginx -g “pid /var/nginx/test.pid;” -s stop,如果不加上 -g “pid /var/nginx/test.pid” 参数,可能会出现找不到pid,服务无法停止的情况
(4) 测试配置信息是否有误,测试 /usr/local/nginx/conf/nginx.conf 配置文件
nginx -t
nginx -t -q // -q 选项可以不将 error 级别以下的信息输出到屏幕上
(5) 显示版本信息
nginx -v
nginx -V // 显示编译阶段的参数
(6) 快速停止服务
使用 -s stop 可以强制停止nginx服务,-s 参数其实是告诉nginx程序向正常运行的nginx服务发送信号,nginx 程序通过 nginx.pid 文件中得到的master进程的pid,向运行中的 master 进程发送 TERM 信号来快速的关闭nginx服务。如:
nginx -s stop
实际上,通过 kill 命令直接向 nginx master 进程发送 SIGKILL 或者 SIGINT 信号,效果是一样的。
(7) “优雅”的停止nginx服务
nginx -s quit
强制停止服务 nginx -s stop ,worker 进程和 master 进程在收到信号之后,会立刻跳出循环,退出进程。“优雅”的停止服务 nginx -s quit,首先会关闭监听端口,停止接收新的连接,然后把正在处理的连接全部处理完之后再退出进程。
通过向master进程发送 SIGQUIT 信号停止服务,与 -s quit 参数停止服务达到的效果是相同的。
“优雅”的停止某个 worker 进程,通过向该 worker 进程发送 WINCH 信号来实现
kill -s -SIGWINCH [nginx worker pid]
(8) 使运行中的 nginx 重读配置项并生效
nginx -s reload //是运行中的 nginx 服务重新读取 nginx.conf 文件。nginx首先会检查 nginx.conf 配置是否正确,然后以“优雅”的方式关闭nginx服务,在重新加载 nginx.conf 启动nginx服务,-s 选项即发送信号,也可以使用一下方式直接发送SIGHUP 信号
kill -s SIGHUP [nginx master pid]
(9) 日志文件回滚
nginx -s reopen
kill -s -SIGUSER1 [nginx master pid]
这样可以先把当前日志重命名或者转移到其他目录中进行备份,重新打开时就会生成新的日志文件。这样单个日志文件就不会过大。
(10) nginx 平滑升级
当nginx服务升级时,通常需要替换原有的二进制文件nginx,一般是要重新启动服务的,但是nginx支持不重启服务就能够完成新版本的平滑升级。
升级时包括以下步骤:
- 通知旧版本的 nginx 准备升级,可通过向旧版本的 master 进程发送 SIGUSER2 信号
kill -s SIGUSER2 [nginx master pid]
这是,运行中的 nginx 会将记录 master 进程pid的文件重命名,例如将 /usr/local/nginx/logs/nginx.pid 重命名成 /usr/local/nginx/logs/nginx.pid.oldbin,这样新版本的 nginx 才可能重启成功。 - 启动新版本的 nginx,可以使用上面介绍的任何一种启动方法。这时可以通过ps查看nginx服务,会发现新版本和旧版本的nginx服务同时在运行。
- 通过 kill 命令向旧版本的 master 进程发送 SIGQUIT 信号,以“优雅”的方式停止旧版本的nginx服务,此时,就只有新版本的 nginx 服务在运行。平滑升级任务完成。
(11) 显示命令行帮助
nginx -h
nginx -?