Nginx作为现代应用架构中的核心组件,熟练掌握其管理命令是每位开发者和运维人员的必修课。本文将系统梳理Nginx从日常操作到深度排障的常用命令,助你高效驾驭Nginx。
一、Nginx 启停与重载(最常用)
1. 启动 Nginx
nginx
使用默认配置文件(通常为 /etc/nginx/nginx.conf)启动服务。
2. 指定配置文件启动
nginx -c /etc/nginx/nginx.conf
在多环境配置(如测试、生产环境配置分离)的场景下非常实用。
3. 停止 Nginx(快速停止)
nginx -s stop
该命令会立即终止Nginx进程,不等待正在处理的请求完成,因此不推荐在生产环境直接使用。
4. 优雅停止 Nginx
nginx -s quit
Nginx会等待所有当前正在处理的请求完成后才退出,这是生产环境推荐的停止方式。
5. 重载配置(不停机热更新)
nginx -s reload
修改配置文件后,必须使用此命令才能使新配置生效。它会平滑重启Worker进程,不会中断已有的连接。
6. 重新打开日志文件
nginx -s reopen
在进行日志切割(例如配合 logrotate 工具)后,需要使用此命令通知Nginx重新打开日志文件。
二、配置文件检查(高频救命命令)
7. 检查配置语法是否正确
nginx -t
在执行 reload 或重启服务前,这绝对是必须进行的动作,可以有效避免因配置错误导致服务不可用。
8. 检查指定配置文件的语法
nginx -t -c /etc/nginx/nginx.conf
9. 显示完整配置内容
nginx -T
此命令不仅会检查语法,还会输出Nginx实际加载的完整配置内容,包括所有 include 进来的文件,便于调试。
三、进程与状态管理
10. 查看 Nginx 进程
ps -ef | grep nginx
11. 查看 Nginx 监听的端口
netstat -lntp | grep nginx
或者使用更现代的 ss 命令:
ss -lntp | grep nginx
12. 区分查看 Master 与 Worker 进程
ps aux | grep 'nginx:'
13. 查看 Nginx 主进程 PID
cat /var/run/nginx.pid
四、日志相关命令(排障核心)
日志分析是Nginx故障排查的核心环节。
14. 实时查看访问日志
tail -f /var/log/nginx/access.log
15. 实时查看错误日志
tail -f /var/log/nginx/error.log
16. 统计访问最频繁的 IP 地址
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
这个命令能快速帮你定位疑似恶意的攻击源IP。
17. 按 HTTP 状态码统计请求
awk '{print $9}' access.log | sort | uniq -c
用于快速了解请求的成功率(如200状态码的数量)和错误分布(如404、500状态码的数量)。
五、版本与编译参数
18. 查看 Nginx 版本
nginx -v
19. 查看详细版本及编译参数
nginx -V
当你需要确认Nginx是否编译了特定模块(例如 --with-http_ssl_module)时,这个命令至关重要。
六、配置与路径定位
20. 查找 nginx.conf 主配置文件路径
nginx -V 2>&1 | grep conf
21. 查找 Nginx 相关的所有文件路径
whereis nginx
22. 查找 Nginx 可执行文件路径
which nginx
七、性能与连接排查
23. 查看系统当前总体连接统计
ss -s
24. 统计 TIME_WAIT 状态的连接数
ss -ant | grep TIME-WAIT | wc -l
过多的TIME_WAIT可能影响端口复用,这个命令有助于发现潜在问题。
25. 查看特定端口(如80)的连接数
ss -ant | grep :80 | wc -l
八、调试与问题定位
26. 前台运行模式(用于调试)
nginx -g "daemon off;"
在Docker容器环境中运行Nginx时,这是标准做法,可以让日志输出到控制台。
27. 生产环境标准重载流程
nginx -t && nginx -s reload
先测试配置语法,无误后再重载,这是严谨的运维操作习惯。
28. 强制杀死 Nginx 进程(最后手段)
kill -9 <pid>
仅当Nginx进程异常卡死,无法响应 stop 或 quit 信号时使用。
29. 重启 Nginx(谨慎使用)
nginx -s stop && nginx
相比 reload,此命令会造成服务短暂中断,需谨慎评估业务影响后使用。
掌握这些命令,意味着你具备了高效管理和快速排障Nginx服务的基本能力。如果你想深入探讨更多关于系统架构或Web服务器的实战经验,欢迎到 云栈社区 与更多开发者交流。