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 会依次将每次请求的结果、上游地址记录出来

相关推荐
shy_snow25 分钟前
Nginx解决跨域问题
运维·nginx
不绝1913 小时前
AB包相关知识
开发语言·lua
難釋懷5 小时前
Nginx基于反向代理的负载均衡
nginx·github·负载均衡
2401_8788204718 小时前
Redis+Lua脚本实现全局令牌桶限流
数据库·redis·lua
未若君雅裁1 天前
微服务限流实战:Nginx 漏桶与网关令牌桶
java·nginx·微服务
littleschemer1 天前
Go:实现游戏服务器网关
服务器·网关·游戏·golang
bug-100861 天前
为什么history模式默认会请求后端资源?
前端·vue.js·nginx
源远流长jerry1 天前
LVS 与 Nginx 负载均衡:从原理到生产实战
运维·网络·网络协议·tcp/ip·nginx·负载均衡·lvs
r-t-H1 天前
KVM虚拟化与Docker基础实践-第三章
linux·运维·nginx·docker·容器
難釋懷2 天前
Nginx虚拟主机
git·nginx·github