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

相关推荐
Lill_bin3 小时前
Lua编程语言简介与应用
开发语言·数据库·缓存·设计模式·性能优化·lua
ps酷教程7 小时前
nginx进阶篇(二)
nginx
双普拉斯7 小时前
微信小程序点赞动画特效实现
nginx·微信小程序·notepad++
苏少朋7 小时前
Docker安装 ▎Docker详细讲解 ▎数据卷挂载 ▎Nginx安装理解
linux·nginx·docker·容器
比花花解语7 小时前
怎么使用nginx把80端口代理到想要的端口?
运维·nginx
两水先木示8 小时前
【Lua坑】Lua协程coroutine无法正常完整执行问题
开发语言·lua·协程·对象池
ps酷教程15 小时前
nginx基础篇(一)
nginx
爱吃龙利鱼20 小时前
nginx实现https安全访问的详细配置过程
运维·nginx·安全·云原生·https
日出等日落1 天前
Nginx 跨域 + 无法设置 Cookie 解决办法
运维·nginx
机器人迈克猫1 天前
Django_Vue3_ElementUI_Release_004_使用nginx部署
nginx·elementui·django