Skip to content

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

        备Nginx

Keepalived 核心思想:

  • 虚拟 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 安全可用体系 =

高可用(不中断)

  • 安全体系(防攻击)
  • 网关化(统一入口)
  • 容灾(最坏情况也能活)

这是从:

❌「一个配置文件」

升级为:

✅「企业级流量控制与安全中枢」