作者回复: 这个模块我没有用过,不清楚它是否屏蔽了next_upstream指令,Nginx官方提供的next_upstream指令是可以在一台server出错时,及时的转换到下一个server返回,使客户端能够得到正确响应的。
作者回复: 淘宝的模块可以定期通过心跳检查上游,与本节课介绍方式不太一样:-)
作者回复: 你配置了fail_timeout吗?认为上游服务不可用后,在fail_timeout秒内都不会再访问,fail_timeout秒后继续原策略。fail_timeout默认是10秒。
作者回复: 你用的是哪个版本的Nginx?我根据你的配置,在我的服务器上修改后,发现主节点异常后仍然正常跳到backup节点,没有收到502。 我用的是最新的Nginx版本。
作者回复: proxy_next_upstream先生效
作者回复: 1、上游响应与try_files没有互相作用,Nginx将HTTP请求的处理按顺序分为11个阶段,其中try_files工作在precontent阶段,而反向代理工作在content阶段,一个在前,一个在后; 2、反向代理upstream框架定义了intercept_errors功能,它会与error_page产生关联,其中响应码在300以上时,可以按error_page替换响应
作者回复: 502可以分为2类原因: 一是TCP建立连接失败,你可以抓包看下,是否三次握手建立失败,比如上游网络不通,就只能看到重发的SYN包,而上游未打开80端口,则会返回RST报文; 二是负载均衡算法无法找到上游server,比如fail_timeout时长内,失败次数过多等。这些都可以从error.log中获取到信息。
作者回复: 是开发环境吧?那可以--with-debug打开debug日志看一下,选择upstream时的相关日志分析下
作者回复: 其实upstream默认自带next_upstream功能,各反向代理模块使用了它,并通过proxy_next_upstream这样的指令暴露出来了。 所以,proxy_next_upstream 的默认配置很重要,例如:Default: proxy_next_upstream error timeout; 你可以看到,它默认是开启的。
作者回复: 不是,off后backup也不会找,请求失败