基础控制类
启动 Nginx 时,默认读取 /etc/nginx/nginx.conf。本质是启动一个 master 进程,再 fork 出多个 worker 进程处理请求。
- 指定配置文件启动:
nginx -c /path/to/nginx.conf。用于多实例部署,或测试环境切换配置。 - 指定工作目录启动:
nginx -p /usr/local/nginx/。会影响 logs、temp、cache 的路径。 - 停止 Nginx(快速停止):
nginx -s stop。直接杀 worker,可能丢请求,不优雅。 - 优雅停止(推荐):
nginx -s quit。流程是停止接收新请求,等待现有请求处理完,再关闭进程。 - 重载配置(核心高频):
nginx -s reload。master 读取新配置,启动新 worker,旧 worker 处理完请求后退出。
这里有个细节:重启 Nginx(nginx -s stop && nginx)会有短暂中断,不推荐。
配置检查类
- 检查配置语法:
nginx -t。输出syntax is ok和test is successful。 - 指定配置文件检查:
nginx -t -c /etc/nginx/nginx.conf。 - 查看完整配置(排查线上问题神器):
nginx -T。会输出所有 include 文件,以及最终生效的配置。
进程与信号控制(进阶)
- 平滑升级(USR2):
kill -USR2 \cat /var/run/nginx.pid``。作用是启动新版本 nginx,旧版本继续处理请求。 - 平滑关闭旧进程:
kill -WINCH \cat /var/run/nginx.pid``。 - 强制关闭进程:
kill -9。除非卡死,否则不推荐。 - 重新打开日志:
nginx -s reopen。用于日志切割(logrotate)。
调试与运行模式
- 前台运行(调试神器):
nginx -g "daemon off;"。常用于 Docker 容器或本地调试。 - 指定全局指令运行:
nginx -g "worker_processes 4;"。可以临时覆盖配置。
状态与监控类
- 查看进程:
ps -ef | grep nginx。输出 master process 和 worker process。 - 查看端口占用:
netstat -ntlp | grep 80或ss -ntlp | grep nginx。 - 查看实时日志:
tail -f /var/log/nginx/access.log。
主要功能
- Master-Worker 多进程架构:启动一个 master 进程管理,然后 fork 出多个 worker 进程处理客户端请求。输入为 Nginx 配置文件,输出为稳定运行的服务进程组,worker 数量可配置。
- 热重载配置:通过
nginx -s reload信号,master 进程加载新配置并启动新 worker,旧 worker 处理完当前请求后退出。输入为修改后的配置文件,输出为无中断的服务更新,不影响正在处理的请求。 - 平滑升级二进制:通过
kill -USR2信号,启动新版本 Nginx 进程,旧版本继续处理请求,最后再通过kill -WINCH关闭旧 worker。输入为新版 Nginx 二进制文件,输出为版本升级,请求零丢失。 - 日志切割与重开:通过
nginx -s reopen信号,让 Nginx 重新打开日志文件。输入为被移动或重命名的日志文件,输出为新的日志写入点,配合 logrotate 工具使用。 - 前台调试模式:使用
nginx -g "daemon off;"让 Nginx 在前台运行,所有日志直接输出到终端。输入为调试指令,输出为实时控制台日志,适用于 Docker 容器或本地问题排查。 - 配置语法校验:通过
nginx -t检查配置文件的语法正确性。输入为 Nginx 配置文件,输出为syntax is ok或具体的错误行号与原因,避免错误配置导致服务启动失败。
如何使用
- 启动服务:直接执行
nginx命令,默认加载/etc/nginx/nginx.conf。 - 修改配置后生效:执行
nginx -s reload,不需要停止服务。 - 检查新配置是否有误:执行
nginx -t,看到syntax is ok和test is successful再 reload。 - 查看最终生效的配置:执行
nginx -T,会打印所有 include 文件的合并结果。 - 进行日志切割:先移动日志文件,再执行
nginx -s reopen。
同类竞品对比
| 对比维度 | Nginx 命令详解 | Apache (httpd) | Caddy |
|---|---|---|---|
| 配置重载机制 | nginx -s reload,master 启动新 worker,旧 worker 处理完请求后退出,无中断 |
apachectl graceful,优雅重启,但会创建新的子进程,有一定资源开销 |
caddy reload,热重载配置,支持 API 动态修改,无需发送信号 |
| 配置检查方式 | nginx -t,检查语法,输出具体错误行 |
apachectl configtest,检查语法,输出 Syntax OK |
caddy validate,验证配置文件,输出错误详情 |
| 日志管理命令 | nginx -s reopen,配合 logrotate 使用,标准信号控制 |
无专用命令,需通过 kill -USR1 信号或重启进程 |
内置日志轮转,支持自动管理,无需手动信号 |
| 调试与前台运行 | nginx -g "daemon off;",通过 -g 参数临时覆盖全局指令 |
httpd -X,单进程调试模式,不支持 -g 参数覆盖 |
caddy run --foreground,默认前台运行,可通过 --config 指定配置 |
应用场景
- Web 服务器部署:使用
nginx -c指定不同配置文件,管理多个站点或应用实例。 - 反向代理与负载均衡:通过
nginx -s reload在不中断服务的情况下,调整 upstream 服务器列表或代理规则。 - API 网关:使用
nginx -T排查复杂的 include 配置链,确认最终生效的路由规则。 - 日志分析系统:配合 logrotate 和
nginx -s reopen,实现日志的定时切割与归档,避免日志文件过大。 - Docker 容器化部署:使用
nginx -g "daemon off;"让 Nginx 在前台运行,作为容器的 1 号进程,确保容器生命周期管理正常。
适用人群
- 运维工程师:需要掌握 Nginx 的启动、停止、重载、平滑升级等日常管理命令。
- 后端开发工程师:在本地调试或测试环境中,使用
nginx -c和nginx -t快速验证配置。 - SRE 工程师:通过
nginx -T和nginx -s reopen进行线上配置审计与日志管理。 - Docker/K8s 用户:必须了解
nginx -g "daemon off;"前台运行模式,以确保容器能正常接收信号。







这一切,似未曾拥有