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

相关推荐
代码炼金术士10 小时前
linux的nginx版本升级
linux·运维·nginx
CXH72815 小时前
nginx-file-server
运维·数据库·nginx
寺中人15 小时前
Nginx安全策略
运维·nginx
橘色的喵18 小时前
C语言面向对象范式:Nginx模块化架构的设计分析
c语言·nginx·架构·面向对象
thekenofdis1 天前
Lua脚本执行多个redis命令提示“CROSSSLOT Keys in request don‘t hash to the same slot“问题
redis·lua·哈希算法
百***67031 天前
Nginx搭建负载均衡
运维·nginx·负载均衡
m0_569531011 天前
Nginx(4)--Nginx与tomcat反向代理和负载均衡
nginx·tomcat·负载均衡
霜绛1 天前
Unity:lua热更新(一)——AB包AssetBundle、Lua语法
笔记·学习·游戏·unity·lua
霜绛1 天前
Unity:lua热更新(二)——Lua语法(续)
笔记·学习·unity·游戏引擎·lua
R.lin2 天前
浅谈Nginx
运维·nginx