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

相关推荐
難釋懷12 小时前
Nginx虚拟主机
git·nginx·github
前端 贾公子12 小时前
基于 Nginx 实现一个灰度上线系统
运维·nginx
鱼听禅15 小时前
CentOS使用Nginx配置代理Gitea后网址设置正确,确保URL不匹配的问题记录
nginx·centos·gitea
Jinkxs16 小时前
LoadBalancer- 简单限流策略:Nginx 基于连接 / 请求的限流实现
java·运维·nginx
imuliuliang17 小时前
Laravel5.x核心特性全解析
android·运维·数据库·nginx
Re_Virtual1 天前
centos 7环境下构建nginx 1.30
nginx·centos·rpmbuild
tonydf1 天前
Nginx爆新的RCE漏洞!别担心,平滑升级即可。
后端·nginx
曹牧1 天前
Nginx 504
运维·nginx
HMS工业网络2 天前
关于多无线设备干扰的解决方法
网关·设备·干扰·工业通讯·无线技术·嵌入式通讯模块
上海合宙LuatOS2 天前
Air8000多网通信- RNDIS/ECM
物联网·lua·嵌入式开发·多网通信