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

相关推荐
2301_816374331 天前
Nginx的源码编译
运维·nginx
Arya_aa2 天前
四:部署前端和后端
nginx
晴夏。2 天前
unlua实现原理
游戏·ue5·ue4·lua·ue·unlua
Java面试题总结2 天前
一文搞定 Linux Nginx 从安装、启动到 nginx.conf 全配置详解(新手也能看懂)
linux·运维·nginx
晴夏。2 天前
c++调用lua的方法
c++·游戏引擎·lua·ue
MiNG MENS3 天前
nginx 代理 redis
运维·redis·nginx
珊瑚怪人3 天前
一个域名问题
nginx
dxdz3 天前
一文搞定 Linux Nginx 从安装、启动到 nginx.conf 全配置详解(新手也能看懂)
nginx
chxii3 天前
lua中Table 与 Metatable
lua
遇见火星3 天前
Nginx 负载均衡配置模板:轮询、权重、IP哈希、最少连接
tcp/ip·nginx·负载均衡