1. 场景说明
nginx中server的upstream可以配置多个server,可以将部分server作为备用,平时正常的时候备用server不生效,作为异常备份机制。
- 官方说明
backup:marks the server as a backup server. It will be passed requests when the primary servers are unavailable.
- 配置
upstream test.api.autohome.com.cn { server 127.0.0.1:10098 weight=60 max_fails=2 fail_timeout=6s; server 127.0.0.1:11098 weight=60 max_fails=2 fail_timeout=6s backup; }
- 非正常请求? 请求超时(超过proxy_read_timeout)也会调用backup-server,和我们理解server down才启用backup-server不一样。
2. 实际情况
backup机制是依赖于proxy_next_upstream机制,遇到proxy_next_upstream指定的错误时,才使用backup-server,执行次数通过proxy_next_upstream_tries来设置,如果proxy_next_upstream_tries=1,则只代表非backup的请求,无法利用backup-server执行backupserver。
说明: 如果proxy_next_upstream_tries=1,则等价于backup策略无效。