WAF回源超时时,是否会自动重试?
不会。
WAF到源站的回源链路基于Nginx反向代理实现,单次请求的上游重试行为受proxy_next_upstream、proxy_next_upstream_tries以及upstream中可用server数量共同影响。
WAF未显式配置proxy_next_upstream_tries,因此使用Nginx默认值0。根据Nginx官方文档定义,该默认值表示不通过该指令限制尝试次数,实际可尝试次数仍受当前upstream中可用server数量的约束。
在WAF场景中,每次请求的回源目标由调度模块在请求处理阶段动态确定,并绑定为单一源站节点(即使客户配置了多台源站,每次请求也只会选定其中一台作为本次回源目标)。
因此,对于单次请求而言,当前upstream中实际可用于回源尝试的目标只有1个,最终包含首次回源在内的尝试次数合计为1次。
所以,当出现连接超时(connect_timeout)、发送超时(send_timeout)或读超时(read_timeout)时,WAF不会对该请求再次发起回源,而是结束本次回源流程,并向客户端返回对应的上游访问失败响应,例如504 Gateway Timeout。