nginx

1 nginx配置高可用

http {
    upstream backend_archive {
      server localhost:9085 max_fails=3 fail_timeout=300s;
      server localhost:9086 backup;
    }
}

主服务器(9085)累计失败 3 次后,Nginx 会将其标记为不可用,并在将流量切到备用服务器(9086),且备用服务器会持续300秒接收流量,然后300秒后会再次尝试将流量转发给9085.

解释

  • 所谓的失败指的是
    • 连接失败(无法与后端建立 TCP 连接(例如后端进程没起、端口没开)),
    • 超时(连接超时或读取响应超时)
    • 而502、503、504 等状态码不计为失败
  • 某一个请求失败后,如果是GET等幂等请求,会立即将该请求转发给备用服务。同时主服务失败次数增1,直到300秒内累计失败次数达到3次,后续流量都会转发给备用服务。
  • 某一个请求失败后,如果是POST等非幂等请求,Nginx 默认不会自动重试。因为 POST 请求可能已经在 9085 上产生了副作用(比如下单),盲目重试可能导致重复提交。
  • 如果希望 POST 请求在连接失败时也能切到 9086,需要在 location 块中显式加上 proxy_next_upstream ... non_idempotent; 配置
posted @ 2026-10-20 13:17  zhenjingcool  阅读(4)  评论(0)    收藏  举报