Nginx 常用指令分类汇总(全覆盖场景)

128 阅读14分钟

本文按 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 -Tless(按 q 退出分页)导出备份:nginx -T > nginx_full_config_2025.conf精准查找:nginx -Tgrep "listen 443"`(查找 HTTPS 端口配置)排查子配置合并问题、确认最终生效配置、备份当前完整配置
nginx -V(大写 V)查看编译参数(默认配置路径、启用模块、版本号)只看默认配置路径:`nginx -Vgrep "conf-path"查看是否支持 SSL:nginx -Vgrep "ssl"查看启用的模块:nginx -Vgrep "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 auxgrep nginx`查看 Nginx 进程信息(路径、PID、运行用户)过滤无关输出:`ps auxgrep nginxgrep -v grep另一种方式:ps -efgrep 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 -tnlpgrep nginx`查看 Nginx 监听的端口及进程关联只查 80 端口:`ss -tnlpgrep :80只查 443 端口:ss -tnlpgrep :443老系统替代指令:netstat -tulpngrep 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 86400Nginx 内置日志切割工具(按时间切割)按天切割配置(需在 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.logwc -l`统计访问日志总行数(估算访问量)统计今日访问量(假设日志按天切割):`cat /var/log/nginx/access_20251205.logwc -l`粗略估算网站访问量(非精准统计,精准需用日志分析工具)

五、性能监控类(优化核心,提升服务稳定性)

核心作用:查看 Nginx 并发连接数、进程资源占用(CPU/内存)、连接状态,为性能优化提供数据支撑。

指令核心作用示例/详细说明优化参考
`netstat -angrep ESTABLISHEDwc -l`查看系统当前活跃连接数(含所有服务)只看 Nginx 80 端口活跃连接:`netstat -angrep :80grep ESTABLISHEDwc -l老系统替代:ss -angrep ESTABLISHEDwc -l`若活跃连接数接近 worker_connections × worker_processes,需提升 Nginx 最大连接数
`ps -eo pcpu,pid,cmdgrep nginx`查看 Nginx 进程 CPU 占用率按 CPU 占用排序:`ps -eo pcpu,pid,cmdgrep nginxsort -k1 -r`若 worker 进程 CPU 占用过高,可能是配置不当(如缓存未开启)或后端服务缓慢
`ps -eo pmem,pid,cmdgrep nginx`查看 Nginx 进程内存占用率输出中 pmem 列表示内存占用百分比(如 0.2 表示占用 0.2% 内存)Nginx 内存占用通常较低,若异常偏高,需检查是否有内存泄漏(如第三方模块问题)
`nginx -Vgrep "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 nginxNginx 进程卡死、无法通过正常指令停止、端口被占用无法释放
kill -9 <PID>杀死指定 PID 的 Nginx 进程步骤:1. 查 PID:`ps auxgrep nginxgrep -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.pidNginx 启动报错“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 -Tgrep "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),避免配置错误导致服务无法启动。

十、总结

  1. 配置操作核心流程:修改配置 → nginx -t 验证语法 → systemctl reload nginx 重载生效,避免直接重启导致服务中断。

  2. 日常排错核心指令:tail -f 错误日志(查运行报错)、ss -tnlp | grep nginx(查端口占用)、ps aux | grep nginx(查进程状态)。

  3. 性能优化关键:通过 curl http://localhost/nginx_status 监控连接状态,调整 worker_processes(建议等于 CPU 核心数)、worker_connections(建议 4096)等参数。

  4. 环境区分:系统级 Nginx 与宝塔 Nginx 路径不同,指令需对应完整路径,避免混淆导致操作失败。