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

相关推荐
泉飒5 小时前
lua注意事项
开发语言·笔记·lua
先做个垃圾出来………9 小时前
接口自动化常用断言方式
数据库·自动化·lua
siqiangming14 小时前
SpringBoot+vue+SSE+Nginx实现消息实时推送
前端·vue.js·spring boot·nginx
流烟默14 小时前
用 Spring Boot 静态资源映射 vs 用 Nginx 提供静态文件服务总结
spring boot·后端·nginx
小妖66616 小时前
nginx 编译添加 ngx_http_proxy_connect_module 模块
运维·nginx·http
Clownseven1 天前
Nginx Lua模块(OpenResty)实战:动态化、智能化你的Nginx,实现复杂Web逻辑 (2025)
nginx·lua·openresty
会敲键盘的猕猴桃很大胆2 天前
Redis实战-基于redis和lua脚本实现分布式锁以及Redission源码解析【万字长文】
java·redis·分布式·spring·lua
云道轩2 天前
deepseek轻松解决 Nginx 网络透传问题实现内部IBM MQ和外部IBM MQ的通信
nginx·ibm mq
dessler2 天前
Web服务器-一代经典LAMP
linux·运维·nginx
小白爱电脑2 天前
路由器、网关和光猫三种设备有啥区别?
运维·网络·网关·路由器·光猫