Nginx ~ 安全可用
一、高可用(High Availability)
1.1 高可用的核心目标
避免单点故障(SPOF):
- Nginx 宕机 → 业务不能停
- 后端服务异常 → 自动切换
- 网络抖动 → 不影响用户
公式:
高可用 = 冗余 + 自动检测 + 自动切换
1.2 Nginx 多实例负载均衡
nginx
upstream backend {
server 10.0.0.1:8080;
server 10.0.0.2:8080;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}负载策略:
| 算法 | 场景 |
|---|---|
| round_robin | 默认 |
| least_conn | 长连接 |
| ip_hash | 会话保持 |
| hash | 灰度发布 |
1.3 健康检查(后端存活检测)
nginx
upstream backend {
server 10.0.0.1:8080 max_fails=3 fail_timeout=30s;
server 10.0.0.2:8080 max_fails=3 fail_timeout=30s;
}意义:
- 自动剔除异常节点
- 自动恢复
1.4 Nginx 双机高可用(Keepalived)
结构:
用户 → VIP → 主Nginx
↓
备NginxKeepalived 核心思想:
- 虚拟 IP
- 主备切换
- 心跳检测
1.5 平滑重启(不中断服务)
bash
nginx -t
nginx -s reload特点:
- 不中断连接
- 热更新配置
二、安全体系(Security)
2.1 常见攻击类型
| 攻击 | 说明 |
|---|---|
| DDoS | 流量洪水 |
| CC 攻击 | 高频请求 |
| SQL 注入 | 参数攻击 |
| 扫描器 | 自动化扫描 |
| 爬虫 | 数据盗取 |
2.2 IP 黑白名单
nginx
allow 192.168.1.0/24;
deny all;2.3 限流(防 CC 攻击)
nginx
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location /api/ {
limit_req zone=one burst=20 nodelay;
}
}2.4 防止恶意爬虫
nginx
if ($http_user_agent ~* "curl|python|scrapy") {
return 403;
}2.5 HTTPS 与证书
nginx
listen 443 ssl;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/key.pem;2.6 Web 应用防火墙(WAF)
- Nginx + ModSecurity
- 规则拦截 SQL/XSS
三、网关化(API Gateway)
Nginx 不只是反向代理,而是:统一入口网关
3.1 网关核心能力
| 能力 | 说明 |
|---|---|
| 路由 | 请求分发 |
| 认证 | Token 校验 |
| 限流 | 流量控制 |
| 鉴权 | 权限判断 |
| 日志 | 行为审计 |
3.2 路由管理
nginx
location /api/user/ {
proxy_pass http://user_service;
}
location /api/order/ {
proxy_pass http://order_service;
}3.3 统一鉴权
nginx
if ($http_token = "") {
return 401;
}3.4 灰度发布
nginx
map $cookie_version $backend {
default backend_v1;
v2 backend_v2;
}3.5 统一日志与监控
- 接入日志
- 请求耗时
- 状态码
四、容灾(Disaster Recovery)
4.1 容灾级别
| 等级 | 含义 |
|---|---|
| 本机 | 服务重启 |
| 单机房 | 服务器故障 |
| 异地 | 整个机房挂掉 |
4.2 主备架构
用户 → 主机房 → 业务
↓
备机房4.3 DNS 容灾
- 多 IP
- 低 TTL
4.4 数据容灾
- 数据库主从
- 定期备份
- 快照恢复
4.5 自动恢复策略
- 健康检查
- 自动切换
- 失败回滚
五、运维负责人级别能力模型
技术能力
- 高可用架构设计
- 安全防护体系
- 网关治理
- 灰度发布
- 日志与监控
- 容灾体系
管理能力
- 制定规范
- 故障演练
- 应急预案
- 安全审计
六、最小可落地方案(你的公司适用)
第一阶段(基础稳定)
- Nginx 负载均衡
- 日志
- HTTPS
- 限流
第二阶段(安全网关)
- IP 控制
- 鉴权
- 灰度发布
- 日志平台
第三阶段(高可用容灾)
- Keepalived
- 多机房
- DNS 容灾
- 自动恢复
七、总结
Nginx 安全可用体系 =
高可用(不中断)
- 安全体系(防攻击)
- 网关化(统一入口)
- 容灾(最坏情况也能活)
这是从:
❌「一个配置文件」
升级为:
✅「企业级流量控制与安全中枢」
