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

相关推荐
ladymorgana1 小时前
【Nginx从入门到精通】05-安装部署-虚拟机不能上网简单排错
网络·nginx·智能路由器
unix2linux1 小时前
YOLO v5 Series - Image & Video Storage ( Openresty + Lua)
yolo·lua·openresty
最后一个bug2 小时前
如何理解Lua 使用虚拟堆栈
linux·c语言·开发语言·嵌入式硬件·lua
苹果醋316 小时前
Redis | 第3章 对象《Redis设计与实现》
java·运维·spring boot·mysql·nginx
yangshuo12811 天前
Docker-Compose 快速部署安装 Nginx 或其他应用
运维·nginx·docker
.Ayang1 天前
【vulhub】nginx解析漏洞(nginx_parsing_vulnerability)
计算机网络·nginx·安全·web安全·网络安全·系统安全·网络攻击模型
小韩加油呀1 天前
nginx配置不缓存资源
nginx·缓存
半夏知半秋2 天前
lua-lru缓存算法解析
笔记·学习·算法·缓存·lua
最后一个bug2 天前
C语言执行Lua进行错误处理
linux·服务器·c语言·开发语言·嵌入式硬件·lua
袁庭新2 天前
Lua如何连接MySQL数据库?
redis·mysql·lua·lua5.4·袁庭新