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

相关推荐
松莫莫2 小时前
Nginx 学习笔记
笔记·学习·nginx
石头wang3 小时前
postman如何设置鉴权authorization header(怎么只设置一次,统一管理,不要每个request重复设置)
测试工具·lua·postman
悟能不能悟3 小时前
Apache和nginx的区别
运维·nginx
irisart4 小时前
第一章【基石与起源】—— 编译、安装与配置
运维·nginx·angie
疆鸿智能研发小助手4 小时前
船舶制造中的工业网络融合:EtherNet/IP与CC-Link的桥梁构建
网关·工业自动化·ethernet ip·协议转换网关·cc link
阿海5741 天前
安装nginx1.29.3的shell脚本命令
linux·nginx
柯南二号1 天前
【后端】【Java】可直接落地的 Nginx + Java(Spring Boot)+ Redis 的短链系统实现
java·spring boot·nginx
qq_348231851 天前
Redis 事务(MULTI/EXEC)与 Lua 脚本的核心区别
数据库·redis·lua
没有腰的嘟嘟嘟1 天前
从 0 到 1:我如何用 Spring Boot 3 + Redis 打造一个生产级通用幂等与防重中间件(含图解 + 代码 + 案例)
spring boot·redis·中间件·lua
曲幽1 天前
Flask 应用部署实战:Nginx 反向代理配置指南
python·nginx·web·gunicorn·wsgi