作者回复: 这个模块我没有用过,不清楚它是否屏蔽了next_upstream指令,Nginx官方提供的next_upstream指令是可以在一台server出错时,及时的转换到下一个server返回,使客户端能够得到正确响应的。
作者回复: 淘宝的模块可以定期通过心跳检查上游,与本节课介绍方式不太一样:-)
作者回复: 你用的是哪个版本的Nginx?我根据你的配置,在我的服务器上修改后,发现主节点异常后仍然正常跳到backup节点,没有收到502。
我用的是最新的Nginx版本。
作者回复: 其实upstream默认自带next_upstream功能,各反向代理模块使用了它,并通过proxy_next_upstream这样的指令暴露出来了。
所以,proxy_next_upstream 的默认配置很重要,例如:Default: proxy_next_upstream error timeout; 你可以看到,它默认是开启的。
作者回复: 不是,off后backup也不会找,请求失败
作者回复: 抓包从网络上找下原因吧。用tcpdump抓包,在wireshark在分析,基于会话和图标,基于相对时间,很容易看出到底是握手时缺了哪一个报文。可以参考我的《Web协议详解与抓包实战》第37课。
作者回复: 似乎是proxy next upstream没有配对?
作者回复: 你配置了fail_timeout吗?认为上游服务不可用后,在fail_timeout秒内都不会再访问,fail_timeout秒后继续原策略。fail_timeout默认是10秒。