Nginx高可用配置踩坑记录

LoudWarrior +0/-0 0 0 正常 2025-12-24T07:01:19 Nginx · 微服务 · API网关

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个月,建议在部署前先进行压力测试验证。

推广
广告位招租

讨论

0/2000
Piper844
Piper844 · 2026-01-08T10:24:58
upstream权重设置真的不能忽视,我之前也踩过坑,没加weight默认是1,结果流量分布极不均匀,加了之后配合监控看实际请求量才稳定下来。
Chris140
Chris140 · 2026-01-08T10:24:58
ip_hash策略在微服务里确实有用,但要注意客户端IP变化的情况,比如Nginx代理后可能拿不到真实源IP,建议结合real_ip模块一起用。
FierceLion
FierceLion · 2026-01-08T10:24:58
健康检查模块要提前装好,别等到线上才发现没这个功能。我之前直接用了默认配置,结果频繁误判导致服务不可用,加了合适的rise/fall参数才恢复正常。