5、nginx命令行控制

发布时间 2024-01-02 16:42:44作者: ccblblog

1、nginx安装目录

默认安装目录 /usr/local/nginx
二进制文件路径 /usr/local/nginx/sbin/nginx
配置文件路径 /usr/local/nginx/conf/nginx.conf

2、nginx命令

2.1 默认方式启动

直接执行Nginx二进制程序。例如: /usr/local/nginx/sbin/nginx 这时,nginx会读取默认路径下的配置件:/usr/local/nginx/conf/nginx.conf。实际上,在没有显式指定nginx.conf配置文件路径时,将打开在 configure 命令执行时使用 --conf-path=PATH 指定的 nginx.conf 文件。

2.2 指定配置文件启动

使用 -c 参数指定配置文件,例如:/usr/local/nginx/sbin/nginx -c /tmp/nginx.conf这时,会读取-c参数后指定的 nginx.conf配置文件来启动Nginx。

2.3 指定安装目录的方式启动

使用 -p 参数指定Ngnx的安装目录。例如:/usr/local/nginx/sbin/nginx -p /usr/local/nginx/

2.4 指定全局配置项的方式启动

可以通过-g参数临时指定一些全局配置项,以使新的配置项生效。例如: /usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid;" 这行命令意味着会把 pid 文件写到/var/nginx/test.pid 中
-g 参数的约束条件是指定的配置项不能与默认路径下的nginxconf中的配置项相冲突否则无法启动。就像上例那样,类似这样的配置项:pid logs/nginx.pid,是不能存在于默认的nginx.conf中的。
另一个约束条件是,以-g 方式启动的 Nginx 服务执行其他命令行时,需要把-g参数也带上,否则可能出现配置项不匹配的情形。例如,如果要停止 Nginx 服务,那么需要执行下面代码:
/usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid; -s stop
如果不带上 -g "pid /var/nginx/test.pid;",那么找不到 pid 文件,也会出现无法停止服务的情况。

2.5 测试配置信息是否有错误

在不启动 Nginx的情况下,使用 -t 参数仅测试配置文件是否有错误。例如: /usr/local/nginx/sbin/nginx -t
执行结果中显示配置是否正确。

2.6 在测试配置阶段不输出信息

测试配置选项时,使用 -q 参数可以不把 error 级别以下的信息输出到屏幕。例如: /usr/local/nginx/sbin/nginx -t -q

2.7 显示版本信息

使用-v 参数显示Nginx的版本信息。例如: /usr/local/nginx/sbin/nginx -v

2.8 显示编译阶段的参数

使用-V 参数除了可以显示 Nginx 的版本信息外,还可以显示配置编译阶段的信息,如GCC编译器的版本、操作系统的版本、执行 configure 时的参数等。例如:/usr/local/nginx/sbin/nginx -V

2.9 快速地停止服务

使用 -s stop 可以强制停止Nginx服务。-s参数其实是告诉Nginx程序向正在运行的Nginx服务发送信号量,Nginx程序通过nginx.pid 文件中得到 master 进程的进程ID,再向运行中的 master 进程发送TERM信号来快速地关闭Nginx 服务。例如:
/usr/local/nginx/sbin/nginx -s stop

2.10 “优雅”地停止服务

如果希望 Nginx 服务可以正常地处理完当前所有请求再停止服务,那么可以使用 -s quit参数来停止服务。例如:
usr/local/nginx/sbin/nginx -s quit该命令与快速停止 Nginx服务是有区别的。当快速停止服务时,worker 进程与 master进程在收到信号后会立刻跳出循环,退出进程。而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。与快速停止服务相似,可以直接发送 QUIT 信号给 master 进程来停止服务,其效果与执行-s quit 命令是一样的。例如: kill -s SIGQUIT <nginx master pid>

2.11 使运行中的Nginx 重读配置项并生效

使用 -s reload参数可以使运行中的Nginx 服务重新加载nginx.conf文件。例如:/usr/local/nginx/sbin/nginx -s reload 事实上,Nginx 会先检查新的配置项是否有误,如果全部正确就以“优雅”的方式关闭再重新启动 Nginx 来实现这个目的。类似的,-s 是发送信号,仍然可以用 kil1命令发送HUP信号来达到相同的效果。kill -s SIGHUP <nginx master pid>

2.12 日志文件回滚

使用-s reopen 参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其他目录中进行备份,再重新打开时就会生成新的日志文件。这个功能使得日志文件不至于过大。例如: /usr/local/nginx/sbin/nginx -s reopen
当然,这与使用 ki11命令发送USR1信号效果相同。kill -s SIGUSR1 <nginx master pid>

2.13 平滑升级Nginx

当 Nginx 服务升级到新的版本时,必须要将旧的二进制文件 Nginx 替换掉,通常情况下这是需要重启服务的,但 Nginx 支持不重启服务来完成新版本的平滑升级。升级时包括以下步骤:

  • 通知正在运行的旧版本Nginx 备升级。通过向 master 进程发送USR2信号可达到目的。例如:
    kill -s SIGUSR2 <nginx master pid>
    这时,运行中的 Nginx 会将 pid 文件重命名,如将/usr/local/nginx/logs/nginx.pid重命名为`/usr/local/nginx/logs/nginx.pid.oldbin,这样新的 Nginx 才有可能启动成功。
  • 启动新版本的 Nginx,这时通过 ps 命令可以发现新旧版本的Nginx在同时运行。
  • 通过 kill命令向旧版本的 master 进程发送 SIGQUIT 信号,以“优雅”的方式关闭旧版本的Nginx。随后将只有新版本的Nginx 服务运行,此时平滑升级完毕