跳到主要内容

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. 服务管理

命令说明企业规范
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/INTnginx -s stop快速关闭紧急停止
QUITnginx -s quit优雅关闭滚动升级
HUPnginx -s reload重载配置配置更新
USR1nginx -s reopen重开日志日志轮转
USR2kill -USR2 $(cat /run/nginx.pid)平滑升级二进制更新
WINCHkill -WINCH $(cat /run/nginx.pid)优雅关闭 Worker调试用

平滑升级流程

  1. kill -USR2 $(cat /run/nginx.pid)
  2. 新旧 Master 共存
  3. kill -QUIT <old-master-pid>

4. 模块与编译

4.1 查看模块

命令说明
nginx -V显示版本与编译参数
`nginx -V 2>&1grep -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 -fsystemd 日志(若启用)
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;autoCPU 核心数
worker_connections 10240;10k+每 Worker 连接数
worker_rlimit_nofile 65535;65535文件描述符限制
multi_accept on;on一次接受多连接
use epoll;epollLinux 高效事件模型
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;动态规则
OpenTracingopentracing 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]

Loading comments...