内容纲要

🗂 | 本文目录: NGINX 指南


获取帮助

$ nginx -h
# 或
$ nginx -?

版本号和编译信息

# 显示版本号
$ nginx -v
# 显示版本号和具体的编译信息
$ nginx -V

停止和重载配置

使用 ps 命令查看 NGINX 进程信息:

$ ps -eLf | grep nginx
root       53495       1   53495  0    1 00:27 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody     53496   53495   53496  0    1 00:27 ?        00:00:00 nginx: worker process

NGINX 有 master 和 worker 两种进程。master 读取并验证配置文件和管理 worker 进程,每个 worker 进程维护一个线程(避免线程切换),处理连接和请求。

NGINX 使用基于事件的模型和依赖于操作系统的机制在工作进程之间高效地分发请求。工作进程的数量在配置文件中定义,可以针对给定的配置进行固定,也可以自动调整为可用 CPU 核心的数量

例如,要停止 NGINX 进程并等待 worker 进程完成服务当前请求时可以使用 nginx -s quit

# 使用 -s 选项向主进程发送信号:停止、退出、重新打开、重新加载
$ nginx -s <signal>

# 立即停止
$ nginx -s stop

# 优雅地停止
$ nginx -s quit

# 重新开始记录日志文件,可用于日志切割
$ nginx -s reopen

# 重新加载配置文件
$ nginx -s reload

在配置文件中所做的更改将不会被立即应用,直到向 NGINX 发送重载配置的命令或者重启 NGINX。要重新加载配置:nginx -s reload

一旦主进程收到重载配置的信号,它就会检查新配置文件的语法有效性,并尝试应用其中提供的配置。如果成功,主进程启动新的工作进程,并向旧的工作进程发送消息,要求它们关闭。否则,主进程将回滚更改,并继续使用旧配置工作。旧工作进程在收到关闭命令后,会停止接受新的连接,并继续为当前的请求提供服务,直到所有这些请求都得到服务。之后,旧工作进程退出。

也可以借助如 kill 之类的工具将信号发送到 NGINX 进程。在这种情况下,会直接向具有给定进程 ID 的进程发送信号。默认情况下,NGINX 主进程的进程 ID 会写入 /usr/local/nginx/logs/var/run 目录下的 nginx.pid

例如假设主进程 ID 为 53495,发送 QUIT 信号让 NGINX 优雅地关闭:

$ sudo kill -s QUIT 53495

指定配置文件

可以使用 -c 选项指定配置文件,如

$ nginx -c /etc/nginx/nginx.conf

测试配置文件

$ nginx -t
# 或
$ nginx -T

指定配置指令

$ nginx -g 'daemon off;'

使用 systemd 管理

NGINX 也可用使用 systemd 进行具体管理(编译安装的 NGINX 可以查看之前的 NGINX | 使用编译安装(源码构建) 了解如何配置 NGINX 的 systemd 服务文件)

# 查看状态
$ systemctl status nginx

# 开启开机启动
$ sudo systemctl enable nginx

# 关闭开机启动
$ sudo systemctl disable nginx

# 重启
$ sudo systemctl restart nginx

# 重载
$ sudo systemctl reload nginx