跳到主要内容

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...