1. nginx命令
执行nginx -h
命令可以看到所有的nginx命令及其解释:
nginx命令使用方法:
nginx [-?hvVtTq] [-s signal] [-p prefix]
[-e filename] [-c filename] [-g directives]
Options:
-?,-h
:帮助命令。-v
:显示nginx版本。-V
:显示nginx版本及安装配置项。-t
:检查配置文件。-T
:检查配置文件并打印配置文件内容。-q
:在检查配置文件期间,不打印非错误信息。-s signal
:给主进程发送信号(如果nginx没有启动,会报错):- stop:快速停止。
- quit:优雅退出。
- reopen:重新打开日志文件。
- reload:重新加载配置文件。
-p prefix
:设置prefix路径 (default: /usr/local/nginx/)。-e filename
:设置错误日志文件路径(default: logs/error.log)。-c filename
:设置配置文件路径 (default: /usr/local/nginx/nginx.conf)。-g directives
:在配置文件中设置全局指令。
2 使用Unix工具发送信号
还可以借助 Unix 工具(例如 kill 程序)向 nginx 进程发送信号。在这种情况下,信号直接发送到具有给定进程 ID 的进程。(默认情况下,nginx 主进程的进程 ID 写入目录 /usr/local/nginx/logs 或 /var/run 中的 nginx.pid。)
例如,如果主进程 ID 为 1628,要发送 QUIT 信号导致 nginx 正常关闭,请执行:
kill -s QUIT 1628
3 常用操作
3.1 检查配置文件
nginx -t # 检查配置文件
nginx -T # 检查配置文件并打印配置文件内容
nginx -tc <file_path> # 检查指定的配置文件
3.2 启动nginx
启动nginx可以使用以下的命令:
nginx # 启动nginx
nginx -c <file_path> # 使用指定的配置文件启动nginx
3.3 停止nginx
假设nginx主进程PID为13427,可以使用以下的方式来停止nginx:
# 快速退出
nginx -s stop
kill -TERM 13427
# 优雅退出
nginx -s quit
kill -QUIT 13427
# 强制停止
kill -9 13427
一般情况下,应该使用优雅退出的方式停止nginx。
3.4 重启nginx
除了先关闭再启动nginx外,我们可以使用以下的方式重启nginx,以加载新的配置:
nginx -s reload # 重新加载配置文件
nginx -s reload -c <file_path> # 重新加载指定的配置文件
nginx -s reload
命令用于重新加载Nginx的配置文件,而不会停止服务或断开现有的连接。通过这个命令,您可以在不中断服务的情况下应用新的配置,使配置更改生效。
当您使用nginx -s reload命令时,Nginx会检查新的配置文件并尝试应用更改。如果新的配置文件中有语法错误,Nginx将不会重新加载配置并继续使用旧的配置。这有助于避免由于配置错误导致的服务中断。
4 平滑升级nginx
nginx帮助我们实现了方便的平滑升级。其原理简单概括,就是:
- 在不停掉老进程的情况下,启动新进程。
- 老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
- 新进程接受新请求。
- 老进程处理完所有请求,关闭所有连接后,停止。
这样就很方便地实现了平滑升级。一般有两种情况下需要升级Nginx,一种是确实要升级Nginx的版本,另一种是要为Nginx添加新的模块。
具体内容可以看这一篇文章:Nginx平滑升级