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

相关推荐
Joren的学习记录17 小时前
【Linux运维进阶知识】Nginx负载均衡
linux·运维·nginx
华无丽言20 小时前
如何解决 413 Request Entity Too Large ?
nginx
小雨下雨的雨20 小时前
第5篇:Redis事务与Lua脚本
redis·junit·lua
..Move...20 小时前
基于Containerd搭建 K8s
运维·nginx·云原生
古城小栈1 天前
有了Nginx还需要网关吗?
运维·nginx
zeijiershuai1 天前
Vue-打包部署(Nginx)
前端·vue.js·nginx
BuHuaX1 天前
Lua入门
开发语言·unity·junit·c#·游戏引擎·lua
huaweichenai1 天前
了解nginx
linux·服务器·nginx
被闲置的鱼1 天前
麒麟OS各种环境安装脚本,达梦数据库DM8、JDK安装、Nginx安装、vsftpd安装、硬盘挂载一件安装脚本
java·linux·数据库·nginx·kylin
友莘居士1 天前
HTTP正向代理 vs TCP反向代理:概念与使用场景详解
运维·服务器·nginx·反向代理