本文按 Nginx 运维核心场景分类整理常用指令,涵盖配置验证、服务管理、排查调试、日志处理、性能监控、HTTPS 配置等全场景,适配系统级 Nginx 与宝塔面板 Nginx,兼顾新手入门与资深运维需求。
一、配置验证与调试类(排错核心,修改配置前必做)
核心作用:验证配置语法正确性、查看完整生效配置、确认 Nginx 版本与编译信息,避免因配置错误导致服务异常。
| 指令 | 核心作用 | 示例/详细说明 | 适用场景 | |||
|---|---|---|---|---|---|---|
nginx -t | 验证配置语法,显示主配置文件路径 | 系统级 Nginx:nginx -t宝塔 Nginx(完整路径):/www/server/nginx/sbin/nginx -t输出示例:nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful | 修改配置后启动/重载前,快速排查语法错误 | |||
nginx -T | 输出所有生效的完整配置(含 include 子配置) | 分页查看:`nginx -T | less(按 q 退出分页)导出备份:nginx -T > nginx_full_config_2025.conf精准查找:nginx -T | grep "listen 443"`(查找 HTTPS 端口配置) | 排查子配置合并问题、确认最终生效配置、备份当前完整配置 | |
nginx -V(大写 V) | 查看编译参数(默认配置路径、启用模块、版本号) | 只看默认配置路径:`nginx -V | grep "conf-path"查看是否支持 SSL:nginx -V | grep "ssl"查看启用的模块:nginx -V | grep "module"` | 确认 Nginx 功能支持(如 HTTPS、gzip)、定位默认配置路径 |
nginx -v(小写 v) | 仅查看 Nginx 版本号 | 输出示例:nginx version: nginx/1.24.0 | 快速确认 Nginx 版本,判断是否支持特定功能(如新版本特性) | |||
nginx -s reopen | 重新打开日志文件(日志切割/删除后生效) | 日志切割后执行:nginx -s reopen,无需重启 Nginx 即可生成新日志文件 | 日志切割后重新生成日志、日志文件误删后恢复日志记录 |
二、服务启停/重载类(核心运维指令,服务管理关键)
核心作用:启动、停止、重启、重载 Nginx 服务,设置开机自启,适配 systemd 管理(推荐)与传统指令两种方式。
| 指令 | 核心作用 | 示例/详细说明 | 注意事项 |
|---|---|---|---|
systemctl start nginx | 启动系统级 Nginx 服务 | CentOS 7+/Ubuntu 16+ 通用,依赖 systemd 服务 | 推荐优先使用 systemd 管理,启停更稳定,支持状态追踪 |
systemctl stop nginx | 优雅停止 Nginx 服务 | 会处理完当前所有连接后再停止,无服务中断风险 | 避免使用 kill -9 强制停止(可能导致连接丢失) |
systemctl restart nginx | 重启 Nginx 服务(先停后启) | 等同于 systemctl stop nginx + systemctl start nginx | 仅在修改全局参数(如 worker_processes)后使用,优先用 reload 重载 |
systemctl reload nginx | 重载 Nginx 配置(不中断服务) | 修改 server/location 配置、日志格式等后执行,零感知生效 | 配置修改后首选指令,避免重启导致的服务中断 |
systemctl enable nginx | 设置系统级 Nginx 开机自启 | 输出示例:Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service | 服务器重启后自动启动 Nginx,避免手动启动麻烦 |
systemctl disable nginx | 关闭系统级 Nginx 开机自启 | 取消开机自动启动,适用于临时停用 Nginx 场景 | 仅关闭自启,不影响当前运行的 Nginx 服务 |
systemctl status nginx | 查看 Nginx 运行状态(含报错日志) | 显示完整日志:systemctl status nginx -l输出包含:运行状态(active/inactive)、PID、最近报错信息 | 快速判断 Nginx 是否正常运行,定位启动失败原因 |
systemctl is-active nginx | 仅判断 Nginx 是否处于运行状态 | 运行中输出:active,未运行输出:inactive | 适用于 Shell 脚本中判断 Nginx 状态(如定时监控脚本) |
nginx -s stop | 强制停止 Nginx 服务(暴力终止进程) | 传统指令,不依赖 systemd,直接终止进程 | 仅应急使用(如 Nginx 卡死),可能导致未完成的连接丢失 |
nginx -s quit | 优雅停止 Nginx 服务(处理完连接后退出) | 传统指令,等同于 systemctl stop nginx 的优雅停止逻辑 | 手动停止 Nginx 时首选(非 systemd 环境) |
nginx -c /path/nginx.conf | 指定自定义配置文件启动 Nginx | 示例:nginx -c /etc/nginx/test_nginx.conf | 适用于多配置文件测试、临时切换配置场景 |
三、配置/进程/端口查看类(环境排查核心)
核心作用:定位配置文件位置、查看 Nginx 进程信息、排查端口占用问题,解决“配置在哪”“服务是否运行”“端口被谁占用”等基础问题。
| 指令 | 核心作用 | 示例/详细说明 | 常见用途 | ||||
|---|---|---|---|---|---|---|---|
| `ps aux | grep nginx` | 查看 Nginx 进程信息(路径、PID、运行用户) | 过滤无关输出:`ps aux | grep nginx | grep -v grep另一种方式:ps -ef | grep nginx`输出解读:root 1234 0.0 0.1 59000 1820 ? Ss 10:00 0:00 nginx: master process /usr/sbin/nginx(主进程,PID 1234)nginx 1235 0.0 0.2 59388 2540 ? S 10:00 0:00 nginx: worker process(工作进程) | 确认 Nginx 运行路径(区分系统级/宝塔)、获取进程 PID(用于强制停止)、查看运行用户 |
| `ss -tnlp | grep nginx` | 查看 Nginx 监听的端口及进程关联 | 只查 80 端口:`ss -tnlp | grep :80只查 443 端口:ss -tnlp | grep :443老系统替代指令:netstat -tulpn | grep nginx`(需安装 net-tools 工具) | 确认 80/443 端口是否被 Nginx 占用、排查端口冲突问题 |
lsof -i:80 | 查看指定端口(如 80)被哪个进程占用 | 查 443 端口:lsof -i:443输出包含:进程名、PID、用户、占用协议(TCP/UDP) | 端口冲突时定位占用进程(如 80 端口被 Apache/其他服务占用) | ||||
find / -name nginx.conf 2>/dev/null | 全局查找所有 nginx.conf 配置文件 | 缩小查找范围(提升效率):find /etc /usr/local /www -name nginx.conf 2>/dev/null2>/dev/null:过滤权限不足的错误提示 | 定位系统中所有 Nginx 配置文件(区分系统级/宝塔/源码编译版本) | ||||
grep -rn "关键词" /etc/nginx/ --include="*.conf" | 全局查找 Nginx 配置中的特定内容 | 查找 server_name 配置:grep -rn "server_name" /etc/nginx/ --include="*.conf"查找 root 目录配置:grep -rn "root" /etc/nginx/ --include="*.conf"-r:递归查找;-n:显示行号 | 快速定位特定配置项位置(如查找某个域名的配置、根目录配置) |
四、日志管理类(日常查错必备)
核心作用:查看访问日志、错误日志,过滤关键信息,实现日志切割,解决“用户访问异常”“服务报错”等问题。
| 指令 | 核心作用 | 示例/详细说明 | 查错技巧 | ||
|---|---|---|---|---|---|
tail -f /var/log/nginx/error.log | 实时监控 Nginx 错误日志 | 查看最后 100 行历史错误:tail -n 100 /var/log/nginx/error.log保存错误日志:cp /var/log/nginx/error.log /var/log/nginx/error_20251205.log | 实时捕捉 Nginx 启动失败、访问报错(如 502、403)、配置异常等信息 | ||
tail -f /var/log/nginx/access.log | 实时监控 Nginx 访问日志 | 过滤特定 IP 访问记录:grep "192.168.1.100" /var/log/nginx/access.log过滤特定 URL 访问记录:grep "/api/login" /var/log/nginx/access.log | 查看用户访问轨迹、统计特定页面访问量、定位异常访问(如爬虫攻击) | ||
grep "关键词" /var/log/nginx/日志文件 | 过滤日志中的关键信息 | 过滤 502 错误:grep "502" /var/log/nginx/access.log过滤 404 错误:grep "404" /var/log/nginx/access.log过滤超时错误:grep "timeout" /var/log/nginx/error.log | 快速定位特定类型错误(如后端服务异常导致的 502、文件缺失导致的 404) | ||
rotatelogs /var/log/nginx/access.log 86400 | Nginx 内置日志切割工具(按时间切割) | 按天切割配置(需在 Nginx 配置中添加):access_log " | /usr/sbin/rotatelogs /var/log/nginx/access_%Y%m%d.log 86400" main;86400:秒数(24小时),%Y%m%d:年月日格式(如 access_20251205.log) | 避免日志文件过大(如几十 GB),方便按日期归档、清理历史日志 | |
| `cat /var/log/nginx/access.log | wc -l` | 统计访问日志总行数(估算访问量) | 统计今日访问量(假设日志按天切割):`cat /var/log/nginx/access_20251205.log | wc -l` | 粗略估算网站访问量(非精准统计,精准需用日志分析工具) |
五、性能监控类(优化核心,提升服务稳定性)
核心作用:查看 Nginx 并发连接数、进程资源占用(CPU/内存)、连接状态,为性能优化提供数据支撑。
| 指令 | 核心作用 | 示例/详细说明 | 优化参考 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| `netstat -an | grep ESTABLISHED | wc -l` | 查看系统当前活跃连接数(含所有服务) | 只看 Nginx 80 端口活跃连接:`netstat -an | grep :80 | grep ESTABLISHED | wc -l老系统替代:ss -an | grep ESTABLISHED | wc -l` | 若活跃连接数接近 worker_connections × worker_processes,需提升 Nginx 最大连接数 |
| `ps -eo pcpu,pid,cmd | grep nginx` | 查看 Nginx 进程 CPU 占用率 | 按 CPU 占用排序:`ps -eo pcpu,pid,cmd | grep nginx | sort -k1 -r` | 若 worker 进程 CPU 占用过高,可能是配置不当(如缓存未开启)或后端服务缓慢 | ||||
| `ps -eo pmem,pid,cmd | grep nginx` | 查看 Nginx 进程内存占用率 | 输出中 pmem 列表示内存占用百分比(如 0.2 表示占用 0.2% 内存) | Nginx 内存占用通常较低,若异常偏高,需检查是否有内存泄漏(如第三方模块问题) | ||||||
| `nginx -V | grep "worker_connections"` | 查看 Nginx 编译时默认最大连接数 | 输出示例:--with-http_stub_status_module --with-worker_connections=1024 | 生产环境建议将 worker_connections 调整为 4096(需修改 Nginx 配置) | ||||||
curl http://localhost/nginx_status | 查看 Nginx 状态信息(需开启 stub_status 模块) | 开启配置(添加到 server 块):location /nginx_status { stub_status on; allow 127.0.0.1; deny all; }输出解读:Active connections: 10(当前活跃连接)Accepts: 1000(总接受连接数)Handled: 1000(总处理连接数)Requests: 5000(总请求数) | 精准监控 Nginx 连接状态、请求处理效率,是性能优化的核心参考指标 |
六、应急处理类(故障修复,解决突发问题)
核心作用:处理 Nginx 进程卡死、端口占用、PID 文件残留等突发故障,快速恢复服务。
| 指令 | 核心作用 | 示例/详细说明 | 适用场景 | ||
|---|---|---|---|---|---|
pkill -f nginx | 强制杀死所有 Nginx 进程 | 彻底强制杀死(无视优雅停止):pkill -9 nginx | Nginx 进程卡死、无法通过正常指令停止、端口被占用无法释放 | ||
kill -9 <PID> | 杀死指定 PID 的 Nginx 进程 | 步骤:1. 查 PID:`ps aux | grep nginx | grep -v grep(获取主进程 PID,如 1234)2. 杀进程:kill -9 1234` | 单个 Nginx 进程卡死(如某个 worker 进程异常),避免杀死所有进程 |
rm -rf /var/run/nginx.pid | 删除 Nginx PID 文件(进程残留时) | PID 文件默认路径:- 系统级:/var/run/nginx.pid- 宝塔:/www/server/nginx/logs/nginx.pid | Nginx 启动报错“nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)”,但实际无 Nginx 进程(PID 文件残留) | ||
chown -R nginx:nginx /var/log/nginx | 修复 Nginx 日志目录权限 | 若 Nginx 启动报错“open() "/var/log/nginx/error.log" failed (13: Permission denied)”,执行此指令 | 日志目录权限被修改,导致 Nginx 无法写入日志而启动失败 | ||
restorecon -Rv /etc/nginx | 修复 SELinux 上下文(CentOS 系统) | 若关闭 SELinux 后 Nginx 可正常启动,开启后报错,执行此指令修复配置文件上下文 | SELinux 限制导致 Nginx 无法访问配置文件/日志目录/网站根目录 |
七、HTTPS/SSL 相关指令(配置证书常用)
核心作用:生成自签名证书(测试用)、验证 SSL 证书有效性、查看 HTTPS 配置,适配 HTTPS 部署场景。
| 指令 | 核心作用 | 示例/详细说明 | 注意事项 | |
|---|---|---|---|---|
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt | 生成自签名 SSL 证书(测试环境用) | 参数解读:- -x509:生成 X.509 证书(HTTPS 常用)- -nodes:不加密私钥文件(测试用,生产环境需加密)- -days 365:证书有效期 1 年- -newkey rsa:2048:生成 2048 位 RSA 私钥执行后需输入证书信息(如国家、域名、邮箱,测试用可随意填写) | 自签名证书不被浏览器信任(会提示“不安全”),仅用于测试环境;生产环境需使用 Let's Encrypt 等正规 CA 机构颁发的证书 | |
openssl s_client -connect 域名:443 | 测试 HTTPS 连接与 SSL 证书有效性 | 示例:openssl s_client -connect www.example.com:443成功输出:包含证书信息( issuer、subject、有效期)、SSL 协议版本等失败输出:connect: Connection refused(端口未监听)、sslv3 alert handshake failure(证书/协议不匹配) | 快速排查 HTTPS 无法访问问题(如证书过期、端口未开放、配置错误) | |
| `nginx -T | grep "ssl_certificate"` | 查看已配置的 SSL 证书路径 | 输出示例:ssl_certificate "/etc/nginx/ssl/www.example.com.crt";ssl_certificate_key "/etc/nginx/ssl/www.example.com.key"; | 确认 HTTPS 配置中证书路径是否正确(常见错误:路径写错、证书文件缺失) |
certbot --nginx -d 域名 | 生成 Let's Encrypt 免费 SSL 证书并自动配置 Nginx | 示例:certbot --nginx -d www.example.com需先安装 certbot 工具:CentOS:yum install certbot python3-certbot-nginx -yUbuntu:apt install certbot python3-certbot-nginx -y | 生产环境首选,证书有效期 90 天,支持自动续期(可配置定时任务) | |
certbot renew | 续期 Let's Encrypt SSL 证书 | 自动续期所有即将过期的证书(有效期小于 30 天) | 建议配置定时任务自动续期:0 0 1 * * certbot renew >/dev/null 2>&1(每月 1 日凌晨执行) |
八、宝塔面板 Nginx 专属指令(补充全,适配面板环境)
核心作用:适配宝塔面板安装的 Nginx(路径与系统级不同),解决面板环境下的服务管理、配置验证问题。
| 指令 | 核心作用 | 示例/详细说明 | 备注 |
|---|---|---|---|
/www/server/nginx/sbin/nginx -t | 验证宝塔 Nginx 配置语法 | 等同于系统级 nginx -t,仅路径不同 | 宝塔 Nginx 安装路径固定为 /www/server/nginx/ |
/www/server/nginx/sbin/nginx -s reload | 重载宝塔 Nginx 配置 | 修改宝塔面板中 Nginx 配置后,需执行此指令生效(面板中“重载配置”按钮本质是此指令) | 避免直接用 nginx -s reload(可能指向系统级 Nginx) |
/www/server/nginx/sbin/nginx -s stop | 停止宝塔 Nginx 服务 | 优雅停止面板安装的 Nginx 进程 | 若需彻底停用,建议在宝塔面板“软件管理”中停止并卸载 |
bt 14 | 宝塔面板一键重启 Nginx | 执行 bt 命令后,输入 14 也可选择重启 Nginx | 宝塔面板快捷指令,需安装宝塔面板后使用 |
cat /www/server/nginx/conf/nginx.conf | 查看宝塔 Nginx 主配置文件 | 宝塔 Nginx 主配置路径固定,子配置在 /www/server/nginx/conf/vhost/(虚拟主机配置) | 面板中修改的站点配置会保存在 vhost 目录下 |
九、关键注意事项(避坑指南)
-
路径优先级:系统级 Nginx 指令(
nginx)优先用systemctl管理;宝塔/源码编译的 Nginx 必须使用完整路径(如/www/server/nginx/sbin/nginx),避免指令指向错误版本。 -
重载 vs 重启:修改 server/location 配置、日志格式、HTTPS 证书等,优先用
reload(无中断);修改全局参数(如 worker_processes、error_log 路径、加载模块)后,需用restart重启。 -
日志管理:Nginx 不会自动切割日志,需通过
rotatelogs或 certbot 工具配置自动切割,避免日志文件过大(如几十 GB)导致磁盘占满。 -
PID 文件问题:Nginx 启动失败时,先执行
ps aux | grep nginx查看是否有残留进程,再检查 PID 文件(如/var/run/nginx.pid)是否存在,残留则删除后重新启动。 -
权限问题:执行指令时若提示“Permission denied”,需切换 root 用户(
su root)或加sudo(Ubuntu/Debian 系统);网站根目录、日志目录需确保 Nginx 运行用户(如 nginx、www)有读写权限。 -
HTTPS 证书:生产环境禁用自签名证书,优先使用 Let's Encrypt 免费证书(自动续期);证书过期会导致浏览器提示“不安全”,需提前续期(可配置定时任务)。
-
配置备份:修改 Nginx 配置前,建议备份当前配置(如
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak_20251205),避免配置错误导致服务无法启动。
十、总结
-
配置操作核心流程:修改配置 →
nginx -t验证语法 →systemctl reload nginx重载生效,避免直接重启导致服务中断。 -
日常排错核心指令:
tail -f 错误日志(查运行报错)、ss -tnlp | grep nginx(查端口占用)、ps aux | grep nginx(查进程状态)。 -
性能优化关键:通过
curl http://localhost/nginx_status监控连接状态,调整 worker_processes(建议等于 CPU 核心数)、worker_connections(建议 4096)等参数。 -
环境区分:系统级 Nginx 与宝塔 Nginx 路径不同,指令需对应完整路径,避免混淆导致操作失败。