Apisix自定义httpcode 请求重试

我们通过插件来做比较麻烦并且还需要考虑重新lb的问题,有一个比较简单的方法是利用nginx的请求重试信号。

Apisix本身默认也有该种设定,不过默认只针对 timeout情况会请求重试

默认请求重试次数是:updateam node 节点数量 -1

相关逻辑在apisix-balancer.lua的 set_balancer_opts 方法中

设置Nginx配置文件,添加请求重试判断:

我们在 ngx_tpl.lua 760行添加如下配置,示例httpcode可更换
proxy_next_upstream error timeout http_500 http_429 non_idempotent;

支持重试的httpcode可以查看 nginx官方proxy-next-upstream文档

apisix在发生请求重试时,打印的日志中 upstream-status、upstream 会依次将每次请求的结果、上游地址记录出来

相关推荐
Lsetea20 小时前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
炸薯条!1 天前
博客系统测试报告
开发语言·lua
枫叶轻语3 天前
【Nginx 从入门到实战 09】前后端统一入口:部署页面与接口的完整配置
nginx·全栈
无言听风雨丶3 天前
Nginx 深度实战:从架构原理到生产排错
运维·nginx·架构
BuHuaX3 天前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
xxwl5853 天前
Nginx 基础学习笔记
笔记·学习·nginx
fb_123453 天前
K8s StatefulSet五大有状态集群实战_Nginx_Etcd_Redis_Cassandra_MySQL
nginx·kubernetes·etcd
acd120093 天前
域名解析缓存带来的隐性故障,很多排查都漏掉了这一层
java·运维·nginx
努力努力再努力wz3 天前
【Lua 入门系列】模块与包(一):从多文件组织到require 运行时加载机制、模块缓存、预加载搜索与 Lua 文件搜索机制
开发语言·junit·lua
UWA3 天前
多人战斗中Lua持续高耗时,是瞬时峰值还是高频调用在作祟
性能优化·lua·游戏开发