Nginx基本指令大全:常用命令速查手册

VIP/
前言:Nginx 作为轻量级高性能的 Web 服务器、反向代理服务器,凭借异步非阻塞事件驱动架构,在高并发场景中应用广泛,是后端开发、运维工程师必备的核心工具之一。本文整理了 Nginx 日常运维、配置调试、服务管理的全部常用基本指令,按功能分类排版,标注核心用法、示例及注意事项,兼顾新手入门与资深运维速查,内容均经过 Linux 环境验证,可直接复制使用,建议收藏备用。
提示:本文基于 Linux 系统(CentOS 7+/Ubuntu 16+)编写,Windows 系统指令仅需替换路径,核心用法一致;所有指令均区分大小写,执行时需注意权限(部分指令需加 sudo)。

一、Nginx 服务基础管理指令(最常用)

核心作用:负责 Nginx 服务的启动、停止、重启、重载,是日常运维最频繁使用的指令组,优先推荐使用 systemd 管理方式,启停更稳定且支持状态追踪。

1. 启动 Nginx 服务

两种常用启动方式,推荐优先使用 systemctl 指令,适配系统级服务管理:
# 方式1:systemd 启动(推荐,CentOS 7+/Ubuntu 16+ 通用) systemctl start nginx # 方式2:直接启动(指定配置文件,适用于自定义安装路径) nginx -c /etc/nginx/nginx.conf # -c 指定配置文件路径 # 宝塔面板Nginx启动(完整路径) /www/server/nginx/sbin/nginx
注意:启动前建议先验证配置文件语法,避免因配置错误导致启动失败。

2. 停止 Nginx 服务

分优雅停止和强制停止,优先使用优雅停止,避免丢失当前连接:
# 方式1:systemd 优雅停止(推荐,处理完当前连接后停止) systemctl stop nginx # 方式2:Nginx 自带指令优雅停止 nginx -s quit # 方式3:强制停止(不推荐,会强制终止所有连接,可能丢失数据) nginx -s stop # 极端情况:强制杀死进程(仅当上述指令无效时使用) kill -9 $(ps -ef | grep nginx | grep -v grep | awk ‘{print $2}’)

3. 重启 Nginx 服务

适用于修改全局配置(如 worker_processes)后,需完全重启服务生效的场景:
# 方式1:systemd 重启(推荐) systemctl restart nginx # 方式2:先停止再启动(等价于 restart) nginx -s stop && nginx
注意:重启会短暂中断服务,生产环境优先使用重载指令,避免服务中断。

4. 重载 Nginx 配置(核心推荐)

修改 server、location 等配置后,无需重启服务,零感知重载配置,不中断当前连接:
# 方式1:systemd 重载(推荐) systemctl reload nginx # 方式2:Nginx 自带指令重载 nginx -s reload
关键提示:重载前必须执行配置验证,确认语法无错误,否则重载失败会导致服务异常。

5. 查看 Nginx 运行状态

快速判断 Nginx 是否正常运行,定位启动失败原因:
# 方式1:systemd 查看状态(推荐,显示详细信息) systemctl status nginx # 显示完整日志(便于排查报错) systemctl status nginx -l # 方式2:查看 Nginx 进程(确认是否启动) ps -ef | grep nginx # 方式3:仅判断是否处于运行状态(返回 active/inactive) systemctl is-active nginx

6. 设置 Nginx 开机自启/关闭自启

服务器重启后自动启动 Nginx,避免手动操作,适用于生产环境:
# 开启开机自启(推荐) systemctl enable nginx # 关闭开机自启(适用于临时停用 Nginx 场景) systemctl disable nginx

二、Nginx 配置验证与调试指令(排错核心)

核心作用:验证配置文件语法正确性、查看完整生效配置、确认 Nginx 版本与编译信息,是修改配置后必做的排错步骤,避免因配置错误导致服务异常。

1. 验证配置文件语法(重中之重)

修改任何 Nginx 配置后,第一步必须执行此指令,验证语法是否正确:
# 基础验证(默认检查主配置文件) nginx -t # 宝塔面板Nginx验证(完整路径) /www/server/nginx/sbin/nginx -t # 指定配置文件验证(适用于自定义配置文件) nginx -t -c /etc/nginx/conf.d/my.conf
成功提示:nginx: the configuration file /etc/nginx/nginx.conf syntax is ok + nginx: configuration file /etc/nginx/nginx.conf test is successful
失败提示:会显示具体错误行号和原因(如缺少分号、路径错误),根据提示修改即可。

2. 查看完整生效配置(含子配置)

Nginx 主配置文件会引入子配置(如 conf.d 目录下的文件),此指令可查看所有生效的完整配置,便于排查子配置合并问题:
# 查看完整配置(直接输出) nginx -T # 分页查看(按 q 退出分页,适合配置较长场景) nginx -T | less # 导出完整配置备份(便于后续恢复) nginx -T > nginx_full_config_backup.conf # 精准查找配置(如查找 HTTPS 443 端口配置) nginx -T | grep “listen 443”

3. 查看 Nginx 版本信息

区分大小写,小写查看版本号,大写查看详细编译信息:
# 查看 Nginx 版本号(简洁版) nginx -v # 输出示例:nginx version: nginx/1.24.0 # 查看 Nginx 版本 + 编译参数(详细版,含启用模块、默认配置路径) nginx -V # 实用技巧:查看是否支持 SSL 模块(判断能否配置 HTTPS) nginx -V | grep “ssl” # 查看默认配置文件路径 nginx -V | grep “conf-path”

4. 重新打开日志文件(日志切割专用)

日志切割或删除后,无需重启 Nginx,执行此指令即可生成新日志文件,确保日志正常记录:
nginx -s reopen

三、Nginx 核心配置指令(配置文件常用)

核心作用:配置 Nginx 监听端口、域名、静态资源、反向代理、负载均衡等核心功能,所有指令均需在 Nginx 配置文件(nginx.conf 或子配置)中编写,修改后需重载生效。
Nginx 配置文件结构:main(全局配置)→ events(网络连接配置)→ http(核心配置)→ server(虚拟主机)→ location(路径匹配),指令需对应正确的配置块。

1. 全局配置指令(main 块)

# 运行用户(默认 nginx,可省略) user nginx; # Nginx 进程数(推荐设置为 CPU 核数,auto 自动适配) worker_processes auto; # 错误日志存放路径(warn 级别,可改为 error 减少日志量) error_log /var/log/nginx/error.log warn; # Nginx 启动时的 PID 存放位置 pid /var/run/nginx.pid;

2. 网络连接配置指令(events 块)

events { # 使用 epoll I/O 模型(推荐,适配 Linux 系统,提升并发性能) use epoll; # 每个进程允许的最大并发连接数(默认 1024,可根据服务器配置调整) worker_connections 1024; }

3. HTTP 核心配置指令(http 块)

http { # 引入文件扩展名与 MIME 类型映射表(固定配置) include /etc/nginx/mime.types; # 默认文件类型(未知类型时使用) default_type application/octet-stream; # 日志格式定义(main 为自定义名称,可引用) log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ ‘$status $body_bytes_sent “$http_referer” ‘ ‘”$http_user_agent” “$http_x_forwarded_for”‘; # 访问日志存放路径,引用上面定义的 main 格式 access_log /var/log/nginx/access.log main; # 开启高效文件传输模式(推荐开启) sendfile on; # 减少网络报文段数量(配合 sendfile 使用) tcp_nopush on; # 关闭 Nagle 算法,提升实时性(适用于高并发场景) tcp_nodelay on; # 连接超时时间(单位:秒,默认 65 秒) keepalive_timeout 65; # 启用 gzip 压缩(减少网络传输量,提升加载速度) gzip on; # gzip 压缩级别(1-9,级别越高压缩率越高,推荐 5) gzip_comp_level 5; # 需压缩的文件类型(重点压缩文本类资源) gzip_types text/plain text/css application/javascript image/png; # 引入子配置文件(所有 conf.d 目录下的 .conf 文件,推荐拆分配置) include /etc/nginx/conf.d/*.conf; }

4. 虚拟主机配置指令(server 块)

一个 http 块中可配置多个 server 块,实现多域名、多端口部署:
server { # 监听端口(80 为 HTTP 默认端口,443 为 HTTPS 默认端口) listen 80; # 绑定域名(可绑定多个,空格分隔,支持通配符 *.example.com) server_name example.com www.example.com; # 路径匹配配置(location 块,核心) location / { # 静态资源根目录(网站文件存放路径) root /usr/share/nginx/html; # 默认首页文件(按顺序查找,找到第一个存在的文件) index index.html index.htm; } # 错误页面配置(404、50x 错误跳转) error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }

5. 核心场景配置指令(实战常用)

(1)静态资源配置(优化版)

server { listen 80; server_name static.example.com; root /var/www/static; # 静态资源根目录 # 静态资源缓存优化(图片、CSS、JS 等,1年缓存) location ~* \.(ico|css|js|png|jpg|jpeg|gif|webp|woff2)$ { expires 1y; # 缓存时间 1 年 add_header Cache-Control “public, immutable”; # 增强缓存策略 } # 关闭目录索引(防止敏感文件泄露,推荐开启) autoindex off; }

(2)反向代理配置(转发后端服务)

server { listen 80; server_name api.example.com; location / { # 转发到后端服务(如 Spring Boot、Node.js 服务) proxy_pass http://127.0.0.1:8080/; # 结尾 / 表示路径替换 # 传递客户端真实信息(避免后端获取不到真实 IP) proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # WebSocket 支持(如需转发 WebSocket 连接) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection “upgrade”; } }
关键注意:proxy_pass 结尾加 / 与不加 / 的区别:
– 加 /:请求 /api/user → 转发到 http://127.0.0.1:8080/user(去掉 /api 前缀)
– 不加 /:请求 /api/user → 转发到 http://127.0.0.1:8080/api/user(保留 /api 前缀)

(3)负载均衡配置(多后端集群)

# 定义后端集群(http 块中配置) upstream spring_boot_cluster { # 后端服务器地址,weight 为权重(权重越高,接收请求越多) server 192.168.1.50:8080 weight=8; server 192.168.1.51:8080 weight=4; server 192.168.1.52:8080 backup; # 备用节点(主节点故障时启用) } # 虚拟主机配置(转发请求到集群) server { listen 80; server_name cluster.example.com; location / { proxy_pass http://spring_boot_cluster; proxy_connect_timeout 5s; # 连接超时时间 proxy_send_timeout 10s; # 发送超时时间 proxy_read_timeout 10s; # 读取超时时间 } }
支持负载均衡算法:轮询(默认)、权重(weight)、IP 哈希(ip_hash;,解决 Session 共享问题)、最少连接等。

(4)HTTPS 配置(强制跳转)

# HTTP 服务:强制跳转到 HTTPS server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; # 301 永久跳转 } # HTTPS 服务配置 server { listen 443 ssl; server_name example.com; # SSL 证书路径(可从 Let’s Encrypt 免费获取) ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; # SSL 优化配置(减少握手开销) ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; location / { proxy_pass http://backend; # 其他 proxy 配置(参考反向代理) } }

(5)限流配置(防刷保护)

# 定义限流规则(http 块中配置):每秒最多 10 个请求,突发 20 个 limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s; server { listen 80; server_name api.example.com; # 对登录接口限流(防止暴力破解) location /api/login { limit_req zone=api_limit burst=20 nodelay; proxy_pass http://backend; } }

四、Nginx 日志与文件相关指令

核心作用:管理 Nginx 日志、查看日志内容、定位访问记录和错误信息,是排查问题的关键。

1. 查看 Nginx 访问日志(最常用)

# 实时查看访问日志(实时监控请求,按 Ctrl+C 退出) tail -f /var/log/nginx/access.log # 查看最近 100 条访问日志 tail -n 100 /var/log/nginx/access.log # 查找指定 IP 的访问记录(排查恶意 IP) grep “192.168.1.100” /var/log/nginx/access.log # 查找指定 URL 的访问记录(排查接口问题) grep “/api/user” /var/log/nginx/access.log

2. 查看 Nginx 错误日志

# 实时查看错误日志(排查服务启动、请求报错) tail -f /var/log/nginx/error.log # 查看最近 50 条错误日志 tail -n 50 /var/log/nginx/error.log

3. 日志切割(避免日志过大)

生产环境建议配置日志自动切割,避免单个日志文件过大,可借助 logrotate 工具,核心配置示例:
# 编辑 logrotate 配置文件 vim /etc/logrotate.d/nginx # 配置内容(每天切割,保留 7 天日志) /var/log/nginx/*.log { daily rotate 7 compress missingok notifempty postrotate /usr/sbin/nginx -s reopen endscript }

五、Nginx 常用辅助指令

# 查看 Nginx 安装路径(查找所有相关文件) whereis nginx # 查找 Nginx 配置文件位置(快速定位) find / -name “nginx.conf” # 关闭 Nginx 版本号显示(安全加固,避免暴露版本信息) # 在 http 块中添加:server_tokens off; # 测试 Nginx 端口是否可访问(排查端口占用) telnet 127.0.0.1 80 # 或 netstat -an | grep 80

六、常见问题与避坑指南(重点)

1. 配置修改后不生效?

解决方案:① 执行 nginx -t 验证配置语法是否正确;② 执行 systemctl reload nginx 重载配置;③ 若修改了全局参数(如 worker_processes),需重启 Nginx 生效。

2. Nginx 启动失败,提示“address already in use”?

原因:80/443 端口被其他服务(如 Apache、Tomcat)占用。解决方案:① 关闭占用端口的服务;② 更改 Nginx 监听端口(修改 listen 指令)。

3. 反向代理后,后端获取不到真实 IP?

解决方案:在 location 块中添加 proxy_set_header 相关指令,传递客户端真实 IP(参考本文反向代理配置)。

4. 静态资源访问 404?

原因:① root/alias 路径配置错误;② 静态文件权限不足;③ 目录索引关闭且未配置默认首页。解决方案:① 检查路径是否正确(alias 需以 / 结尾);② 赋予文件 755 权限;③ 配置 index 指令指定默认首页。

5. 禁止使用 kill -9 强制停止 Nginx?

后果:会强制终止所有工作进程,导致当前连接丢失、数据异常。推荐使用 systemctl stop nginxnginx -s quit 优雅停止。

七、总结

本文整理了 Nginx 日常使用中最核心、最常用的指令,涵盖服务管理、配置验证、核心配置、日志管理、实战场景等维度,按功能分类排版,方便快速检索。Nginx 的核心优势在于高性能、高并发和灵活的配置,掌握这些基础指令,可轻松应对日常运维、项目部署、问题排查等场景。
建议收藏本文,在实际开发中遇到问题时直接查阅;如果需要更复杂的配置(如灰度发布、熔断机制),可留言交流。
创作不易,点赞+收藏+关注,后续将持续更新 Nginx 进阶教程(性能调优、高可用部署等)!
补充:本文所有指令均在 CentOS 7 + Nginx 1.24.0 环境下测试通过,不同版本 Nginx 指令基本一致,细微差异可通过 nginx -h 查看帮助文档。

购买须知/免责声明
1.本文部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
2.若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
3.如果本站有侵犯、不妥之处的资源,请在网站右边客服联系我们。将会第一时间解决!
4.本站所有内容均由互联网收集整理、网友上传,仅供大家参考、学习,不存在任何商业目的与商业用途。
5.本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
6.不保证任何源码框架的完整性。
7.侵权联系邮箱:188773464@qq.com
8.若您最终确认购买,则视为您100%认同并接受以上所述全部内容。

海外源码网 Nginx Nginx基本指令大全:常用命令速查手册 https://moyy.us/22068.html

相关文章

猜你喜欢