Nginx高可用集群需同时实现负载均衡与故障不中断:通过Keepalived实现VIP漂移保障高可用,Nginx负责流量分发;配合健康检查、SSL卸载、透传关键请求头及合理超时设置,确保MinIO等敏感服务稳定运行。

负载均衡和高可用反向代理不是两个独立目标,而是一体两面:前者解决流量分发,后者解决服务不中断。真正落地时,必须同时考虑节点健康探测、会话保持、长连接支持、SSL卸载和故障自动剔除这些细节。
接入层高可用:Nginx集群 + Keepalived防止单点
单台Nginx仍是瓶颈。生产环境推荐双机热备+Nginx集群组合:
- 两台Nginx服务器部署完全相同的配置,监听同一VIP(虚拟IP)
- 用Keepalived实现VIP漂移:主节点宕机后,3秒内自动切到备用节点
- 所有上游服务(如Tomcat、MinIO、API网关)统一注册到Nginx upstream组,不暴露真实IP
- 避免在Nginx本机做动静分离或复杂rewrite——它只做“流量调度”,逻辑下沉到后端服务
MinIO等特殊服务的代理要点
对象存储类服务对代理行为敏感,配置不当会导致大文件上传中断或签名失效:
- API端口(9000)需启用proxy_buffering off,禁用响应缓冲
- 必须透传X-Forwarded-For、Host、Authorization头,否则S3签名校验失败
- Console端口(9001)有状态,建议用ip_hash保证同一管理员始终路由到同一节点
- 设置proxy_read_timeout 600(10分钟),适应GB级文件上传耗时
健康检查与自动故障隔离
默认轮询无法感知后端是否真能处理请求。需要主动探测:
- 对Tomcat:用/health或/actuator/health做HTTP GET探针
- 对MinIO:用/minio/health/live接口判断节点存活
- 配置max_fails=2 fail_timeout=15s,连续两次失败即临时下线
- 搭配slow_start=30s,恢复节点逐步加量,避免雪崩
HTTPS统一终止与证书管理
把SSL卸载放在Nginx层,既减轻后端压力,又便于统一更新证书:
- 使用Let’s Encrypt配合certbot自动续期,脚本化部署到所有Nginx节点
- 配置ssl_session_cache shared:SSL:10m提升TLS复用率
- 强制HTTP跳转HTTPS:return 301 https://$host$request_uri
- 后端服务走HTTP内网通信,无需证书,但需校验X-Forwarded-Proto: https头防止协议降级


















