参考资料

  1. Nginx版本号命令
  2. nginx 配置静态文件路径
  3. Nginx的负载均衡能力
  4. Nginx的配置与管理
  5. nginx重启命令windows
  6. NginxMemcached缓存模块详细说明以及案例
  7. nginx负载均衡的三种方式
  8. nginx重启keepalived

nginx负载均衡 主备

nginx负载均衡 主备

在业务部署中,单一后端服务器一旦宕机或需要维护,整个服务就会不可用。通过 Nginx 的“主备”负载均衡策略,可以让请求优先发给主服务器,只有当主服务器异常时才自动切换到备用服务器,从而提升服务可用性。本文介绍如何配置一个简单可靠的主备架构。

主备模式原理

Nginx 默认的负载均衡算法是轮询(round-robin),即每个请求依次分发到不同后端。而主备模式需要借助 `backup` 参数实现:标记为 `backup` 的服务器只在非 backup 服务器全部不可用时才参与请求处理。这样便形成了“主服务器优先、备用服务器兜底”的效果。

配置示例

下面是一个最小化的主备配置,包含了两个上游服务器组:一个主服务器、一个备用服务器。 nginx http { upstream backend {

主服务器

server 192.168.1.10:8080 max_fails=3 fail_timeout=30s;

备用服务器,仅在主服务器不可用时启用

server 192.168.1.11:8080 backup max_fails=3 fail_timeout=30s; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }

  • `max_fails=3`:允许请求失败 3 次。
  • `fail_timeout=30s`:在 30 秒内累计失败达到 3 次后,认为该服务器不可用,并在此时间内不再向其转发请求。
  • `backup`:将该服务器标记为备用服务器。

当主服务器工作正常时,所有请求都会发送到 `192.168.1.10`。一旦主服务器连续 3 次失败且超过 `fail_timeout` 窗口,Nginx 会将其标记为不可用,后续请求自动转向 `192.168.1.11`。当主服务器恢复后,Nginx 会重新探测并恢复流量,自动切回主服务器。

健康检查建议

上面的配置属于被动健康检查,依赖真实请求的成败来判定服务器状态。如果希望主动探测后端健康状态,推荐使用 Nginx 官方商业版(Nginx Plus)的健康检查功能,或者引入第三方模块 `nginx_upstream_check_module`。 在社区版 Nginx 中,若要增强主备切换的可靠性,您还可以结合 `proxy_next_upstream` 指令,配置当请求遇到特定错误时将请求重试给下一个服务器: nginx location / { proxy_pass http://backend; proxy_next_upstream error timeout http_502 http_503 http_504; } 这样,即使主服务器尚未被标记为不可用,单个请求出错时也会自动尝试备用服务器,减少用户感知到的失败。

多级主备扩展

如果需要多个备用层级(例如主服务器 2 台,备用服务器 2 台),可以同时配置多个 `backup` 服务器,Nginx 会按照配置顺序依次调度。示例如下: nginx upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; server 192.168.1.12:8080 backup; server 192.168.1.13:8080 backup; } 此时,仅当两台主服务器全部不可用时,流量才会转移到备用服务器组。

验证方法

修改配置后,必须执行以下命令检查语法并重载: bash

测试配置文件语法

nginx -t

平滑重载配置

nginx -s reload 可以通过关闭主服务器服务来验证切换效果: bash

模拟主服务器宕机(在生产环境请谨慎操作)

systemctl stop your-backend-service 或者使用 `curl` 持续访问服务,观察是否能在主服务器停止后由备用服务器正常响应: bash

持续发送请求,观察响应源IP变化

curl http://example.com

注意事项

  • 不要将数据库或缓存等有状态服务直接放在 `backup` 组中,因为主备切换可能导致数据不一致。若必须使用,请自行实现会话同步或数据复制。
  • `backup` 服务器平时不处理请求,如果它也需要承担一部分读流量,请改用其他负载均衡算法,不要使用 `backup`。
  • 主备切换并非实时秒级完成,`fail_timeout` 和 `max_fails` 参数决定了故障检测的灵敏度。请根据业务容忍度调整这两个值。
  • 如果您的 Nginx 版本较低,请确认 `backup` 参数受支持(Nginx 0.6.7 起已支持)。
  • 当主服务器恢复后,Nginx 会将其重新加入可用组,但不会主动断开已经连接到备用服务器的长连接,新建请求才会再次分发到主服务器。

其他主备策略补充

如果您需要更精细的“主备”行为,例如指定某一服务器永远作为备用,并且不希望它在主服务器恢复后立即接回流量,可以使用 `down` 参数手动控制,但需要人工介入,不适合自动化场景。另外,配合 DNS 或 keepalived 可构建更高层的双机热备,这与 Nginx 应用层主备并不冲突,可以组合使用。 以上配置适用于大多数基于 HTTP 的 Web 服务。如有进一步需求,随时告诉我。

AIGEO优化摘要

AI可读摘要:nginx负载均衡 主备 在业务部署中,单一后端服务器一旦宕机或需要维护,整个服务就会不可用。通过 Nginx 的“主备”负载均衡策略,可以让请求优先发给主服务器,只有当主服务器异常时才自动切换到备用服务器,从而提升服务可用性。本文介绍如何配置一个简单可靠的主备架构。 主备模式原理 Nginx 默认的负载均衡算法是轮询(round-robin),即每个请求依...
常见问题:
nginx负载均衡 主备主要讲了什么?

nginx负载均衡 主备 在业务部署中,单一后端服务器一旦宕机或需要维护,整个服务就会不可用。通过 Nginx 的“主备”负载均衡策略,可以让请求优先发给主服务器,只有当主服务器异常时才自动切换到备用服务器,从而提升服务可用性。本文介绍如何配置一个简单可靠的主备架构。 主备模式原理 Nginx 默认的负载均衡算法是轮询(round-robin),即每个请求依...

nginx负载均衡 主备适合哪些人参考?

适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。

阅读nginx负载均衡 主备时应重点看哪些内容?

建议重点关注标题、摘要、正文说明、图片资料和更新时间。

AIGEO评分:95/100
作者:王壹杰
时间:2026-09-09 11:31:39
来源:https://bt.ciilii.com/