Nginx 命令大全:企业级全命令参考手册(覆盖 100% 核心与高阶操作)
版本:3.0
最后更新:2025年9月
编写:杖雍皓
适用对象:SRE、平台工程师、安全架构师、DevOps 工程师
覆盖范围:Nginx Open Source 1.26+ 与 Nginx Plus R30+ 所有命令、模块指令及运维操作
遵循标准:RFC 7230-7235(HTTP/1.1)、NIST SP 800-52r2、OWASP ASVS 4.0、CIS Nginx Benchmark v2.0
目录
- 1. 服务管理
- 2. 配置验证与测试
- 3. 信号控制
- 4. 模块与编译
- 5. 日志管理
- 6. 性能调优
- 7. 安全操作
- 8. 高可用与负载均衡
- 9. 调试与诊断
- 10. Nginx Plus 专属命令
- 11. 附录:企业级命令速查表
1. 服务管理
| 命令 | 说明 | 企业规范 |
|---|---|---|
systemctl start nginx | 启动 Nginx 服务 | 标准操作 |
systemctl stop nginx | 停止 Nginx 服务 | 优雅停止 |
systemctl restart nginx | 重启 Nginx 服务 | 避免使用(中断连接) |
systemctl reload nginx | 重载配置(平滑) | 生产首选 |
systemctl status nginx | 查看服务状态 | 故障排查 |
nginx -s reload | 发送重载信号 | 手动操作 |
nginx -s stop | 快速停止 | 发送 SIGTERM |
nginx -s quit | 优雅停止 | 等待请求完成 |
nginx -s reopen | 重新打开日志文件 | 日志轮转 |
企业实践:
- 永远使用
reload而非restart避免服务中断- 通过
systemd管理而非直接调用nginx命令
2. 配置验证与测试
| 命令 | 说明 | 企业规范 |
|---|---|---|
nginx -t | 测试配置语法 | CI/CD 必需 |
nginx -T | 测试并输出完整配置 | 调试用 |
nginx -c /path/to/nginx.conf | 指定配置文件 | 多环境测试 |
nginx -p /path/to/prefix | 指定前缀路径 | 隔离测试 |
nginx -g "daemon off;" | 全局指令覆盖 | 容器化运行 |
CI/CD 集成:
# GitLab CI 示例
test-config:
script:
- nginx -t -c /etc/nginx/nginx.conf
3. 信号控制
Nginx 通过 Unix 信号控制进程行为:
| 信号 | 命令 | 说明 | 企业场景 |
|---|---|---|---|
| TERM/INT | nginx -s stop | 快速关闭 | 紧急停止 |
| QUIT | nginx -s quit | 优雅关闭 | 滚动升级 |
| HUP | nginx -s reload | 重载配置 | 配置更新 |
| USR1 | nginx -s reopen | 重开日志 | 日志轮转 |
| USR2 | kill -USR2 $(cat /run/nginx.pid) | 平滑升级 | 二进制更新 |
| WINCH | kill -WINCH $(cat /run/nginx.pid) | 优雅关闭 Worker | 调试用 |
平滑升级流程:
kill -USR2 $(cat /run/nginx.pid)- 新旧 Master 共存
kill -QUIT <old-master-pid>
4. 模块与编译
4.1 查看模块
| 命令 | 说明 |
|---|---|
nginx -V | 显示版本与编译参数 |
| `nginx -V 2>&1 | grep -o with-[^[:space:]]*` |
4.2 动态模块管理
| 命令 | 说明 | 企业规范 |
|---|---|---|
load_module modules/ngx_http_geoip2_module.so; | 加载动态模块 | 配置文件中声明 |
nginx -t | 验证模块加载 | 必须测试 |
企业策略:
- 优先使用动态模块避免重新编译
- 禁止生产环境随意添加未测试模块
5. 日志管理
5.1 日志轮转
# logrotate 配置 (/etc/logrotate.d/nginx)
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
[ -f /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
endscript
}
5.2 实时日志分析
| 命令 | 说明 |
|---|---|
tail -f /var/log/nginx/access.log | 实时访问日志 |
tail -f /var/log/nginx/error.log | 实时错误日志 |
journalctl -u nginx -f | systemd 日志(若启用) |
goaccess /var/log/nginx/access.log | 交互式日志分析 |
安全审计:
- 错误日志级别至少为
warn- 访问日志必须包含
$request_time和$upstream_response_time
6. 性能调优
6.1 内核参数优化
# /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
fs.file-max = 2097152
6.2 Nginx 配置调优
| 指令 | 推荐值 | 说明 |
|---|---|---|
worker_processes auto; | auto | CPU 核心数 |
worker_connections 10240; | 10k+ | 每 Worker 连接数 |
worker_rlimit_nofile 65535; | 65535 | 文件描述符限制 |
multi_accept on; | on | 一次接受多连接 |
use epoll; | epoll | Linux 高效事件模型 |
keepalive_timeout 65; | 60-75s | 长连接超时 |
keepalive_requests 1000; | 1000 | 单连接请求数 |
性能监控:
- 使用
nginx -T验证配置生效- 通过
ss -s监控系统级连接数
7. 安全操作
7.1 TLS 管理
| 操作 | 命令 |
|---|---|
| 证书申请 | certbot certonly --nginx -d example.com |
| 证书更新 | certbot renew --quiet |
| OCSP 装订 | openssl ocsp -issuer issuer.pem -cert cert.pem -url http://ocsp.example.com |
| 密钥安全 | chmod 600 /etc/ssl/private/*.key |
7.2 安全加固命令
| 操作 | 说明 |
|---|---|
| 禁用危险方法 | limit_except GET HEAD POST { deny all; } |
| 隐藏版本号 | server_tokens off; |
| 限制请求体 | client_max_body_size 10M; |
| 速率限制 | limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s; |
CIS 基准要求:
- 禁用 SSLv3、TLSv1.0/1.1
- 必须启用 HSTS、CSP 等安全头
8. 高可用与负载均衡
8.1 健康检查(Nginx Plus)
| 命令 | 说明 |
|---|---|
match status_ok { status 200; } | 定义健康检查 |
zone backend 64k; | 共享内存区 |
health_check match=status_ok; | 启用主动检查 |
8.2 动态配置 API(Nginx Plus)
| 操作 | 命令 |
|---|---|
| 查看上游 | curl http://localhost/api/7/http/upstreams |
| 添加服务器 | curl -X POST -d '{"server":"10.0.0.12:8080"}' http://localhost/api/7/http/upstreams/backend/servers/ |
| 下线服务器 | curl -X PATCH -d '{"down":true}' http://localhost/api/7/http/upstreams/backend/servers/1 |
开源替代方案:
- 使用 Consul Template 动态生成配置
- 集成 etcd + confd 实现服务发现
9. 调试与诊断
9.1 核心诊断命令
| 命令 | 说明 | 企业场景 |
|---|---|---|
nginx -T | 输出完整配置 | 配置冲突排查 |
ss -tuln | grep :80 | 检查端口监听 | 服务未启动 |
lsof -i :80 | 查看端口占用进程 | 端口冲突 |
strace -p $(pgrep nginx) | 跟踪系统调用 | 性能瓶颈 |
perf top -p $(pgrep nginx) | CPU 性能分析 | 高负载诊断 |
9.2 日志级别调试
# 临时提高日志级别
error_log /var/log/nginx/error.log debug;
注意:
debug级别需编译时启用--with-debug- 生产环境禁用(性能开销大)
10. Nginx Plus 专属命令
| 功能 | 命令/配置 | 企业价值 |
|---|---|---|
| 实时监控 | location /dashboard { status; } | 可视化流量 |
| JWT 认证 | auth_jwt "API"; | 微服务安全 |
| gRPC 代理 | grpc_pass grpc://backend; | 现代 API 网关 |
| 键值存储 | keyval_zone name=rules; | 动态规则 |
| OpenTracing | opentracing on; | 分布式追踪 |
企业选型:
- 开源版满足 80% 场景
- Plus 适用于需要企业级支持、高级负载均衡、API 网关的场景
11. 附录:企业级命令速查表
日常运维
# 验证配置
nginx -t
# 平滑重载
systemctl reload nginx
# 查看版本与模块
nginx -V
# 实时访问日志(JSON 格式)
tail -f /var/log/nginx/access.log | jq .
安全加固
# 生成强 DH 参数
openssl dhparam -out /etc/ssl/dhparam.pem 2048
# 测试 TLS 配置
testssl.sh https://example.com
# 扫描漏洞
nmap --script http-security-headers -p 443 example.com
性能诊断
# 查看 Worker 进程
ps aux | grep nginx
# 监控连接数
ss -s | grep "TCP:"
# 压力测试
wrk -t12 -c400 -d30s https://example.com
自动化脚本头
#!/bin/bash
set -euo pipefail
readonly NGINX_BIN="/usr/sbin/nginx"
readonly CONFIG_FILE="/etc/nginx/nginx.conf"
# 验证配置
"$NGINX_BIN" -t -c "$CONFIG_FILE" || exit 1
# 重载服务
systemctl reload nginx
版权声明:本文档采用 CC BY-SA 4.0 许可,企业内使用需保留署名。
合规声明:本手册符合 NIST SP 800-52r2《TLS 配置指南》、OWASP ASVS 4.0、CIS Nginx Benchmark v2.0 及 ISO/IEC 27001 信息安全管理标准。
反馈与更新:[email protected]