Apisix自定义httpcode 请求重试

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

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

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

相关逻辑在apisix-balancer.luaset_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-statusupstream 会依次将每次请求的结果、上游地址记录出来

相关推荐
IMPYLH9 小时前
Lua 的 collectgarbage 函数
开发语言·笔记·junit·单元测试·lua
zhuyasen12 小时前
Go 实战:在 Gin 基础上上构建一个生产级的动态反向代理
nginx·go·gin
a123560mh14 小时前
国产信创操作系统银河麒麟常见软件适配(MongoDB、 Redis、Nginx、Tomcat)
linux·redis·nginx·mongodb·tomcat·kylin
百***355115 小时前
Linux(CentOS)安装 Nginx
linux·nginx·centos
micefind16 小时前
Nginx 反向代理完全指南:从安装到生产环境全流程
nginx
IMPYLH17 小时前
Lua 的 assert 函数
开发语言·笔记·junit·单元测试·lua
斯普信专业组18 小时前
深入理解 Gateway API:设计原则、核心资源与数据流
运维·网关·gateway
寂寞旅行19 小时前
Nginx配置WSS安全WebSocket代理
websocket·nginx·安全
r***869821 小时前
Nginx中$http_host、$host、$proxy_host的区别
运维·nginx·http
王中阳Go21 小时前
库存防超卖(Redis Lua+分布式锁对比实践)
redis·分布式·lua