Nginx高可用配置踩坑记录
在React微服务架构中,API网关的高可用性配置是保障系统稳定运行的关键。最近在部署Nginx作为API网关时遇到了几个典型的坑,分享一下实际配置经验。
问题一: upstream配置中的server权重设置
最初配置时使用了简单的轮询策略:
upstream api_backend {
server 10.0.1.10:8080;
server 10.0.1.11:8080;
server 10.0.1.12:8080;
}
结果发现流量分配不均,通过添加weight参数解决:
upstream api_backend {
server 10.0.1.10:8080 weight=3;
server 10.0.1.11:8080 weight=2;
server 10.0.1.12:8080 weight=1;
}
问题二: 负载均衡策略选择
对于React微服务的请求路由,我们采用ip_hash策略避免session粘性问题:
upstream api_backend {
ip_hash;
server 10.0.1.10:8080;
server 10.0.1.11:8080;
}
问题三: 健康检查配置
通过nginx_upstream_check_module模块实现健康检查:
upstream api_backend {
server 10.0.1.10:8080 check_http_send "GET /health HTTP/1.0\r\n\r\n";
server 10.0.1.11:8080 check_http_send "GET /health HTTP/1.0\r\n\r\n";
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
}
问题四: 防止请求超时
在处理React应用的长连接请求时,增加了超时配置:
location /api/ {
proxy_pass http://api_backend/;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
这些配置在生产环境已稳定运行3个月,建议在部署前先进行压力测试验证。

讨论