启动、停止和重新加载 nginx.conf 配置

本文将对 nginx 进行了基本介绍,并描述了一些可以使用 nginx 完成的简单任务。

nginx 有一个主进程(master process)和几个工作进程(worker process)。主进程的主要目的是读取和评估 nginx 配置,以及维护工作进程。

工作进程(worker process)用来处理客户端发起的实际请求。

nginx 采用基于事件(event-based)模型和依赖于操作系统(OS-dependent)的机制来有效地在工作进程之间分配请求。

工作进程的数量可以在 nginx.conf 配置文件中进行定义,并且可以针对给定的配置固定或自动调整为可用 CPU 内核的数量(关于如何配置工作进程数量,请参阅 worker_processes)。

示例配置:

#user  nobody;
worker_processes  3;

上面配置了3个工作进程。

nginx 及其模块的工作方式均在 nginx 配置文件中设置。默认情况下,配置文件名为 nginx.conf 并放置在目录/usr/local/nginx/conf、/etc/nginx 或 /usr/local/etc/nginx 中。Windows 系统中,nginx 配置文件位于 %nginx_home%/conf 目录下面。

启动、停止和重新加载配置

要启动 nginx 服务,请运行 nginx 可执行文件(Linux 为 nginx,Window 为 nginx.exe)。 nginx 一旦成功启动,就可以通过使用 -s 参数调用 nginx 可执行文件来控制它。使用以下语法:

nginx -s signal

其中 signal 可能是以下之一:

  • stop — 快速停止 nginx 服务,即使 nginx 当前正在处理请求,也停止它。

  • quit — 优雅的停止 nginx 服务,当我们发送该命令后,nginx 将不再接收新请求,等待 nginx 当前正在处理请求完成,所有正在处理的请求均处理完成后才停止。

  • reload — 重新加载 nginx.conf 配置文件

  • reopen — 重新打开日志文件

例如:要停止 nginx 进程以等待工作进程完成当前请求的服务,可以执行以下命令:

nginx -s quit

注意:此命令应在启动 nginx 的同一用户下执行,即使用 test 用户启动,也需要 test 用户去执行上面命令。

在重新加载配置(nginx -s reload)的命令发送到 nginx 或重新启动 nginx 之前,不会将配置文件中所做的更改应用到 nginx。要重新加载配置,请执行如下命令:

nginx -s reload

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

也可以借助 Unix 工具(例如 kill 实用程序)向 nginx 进程发送信号。在这种情况下,信号会直接发送到具有给定进程 ID 的进程。nginx 主进程的进程 ID 默认写入 /usr/local/nginx/logs 或 /var/run 目录下的 nginx.pid(Windows 系统下,进程ID位于 %nginx_home%/conf/nginx.pid)。例如,如果主进程 ID 是 1628,要发送 QUIT 信号导致 nginx 正常关闭,请执行:

kill -s QUIT 1628

要获取所有正在运行的 nginx 进程的列表,可以使用 ps 实用程序。命令如下:

ps -ax | grep nginx

在 Window 系统中,使用 tasklist 命令。命令如下:

tasklist | findstr nginx

有关向 nginx 发送信号的更多信息,请参阅“控制 nginx”。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号