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

相关推荐
chexus8 小时前
21. 深入 Nginx HTTP 缓存源码:CDN功能
nginx·http·缓存
程序猿DD1 天前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
BelongPanda1 天前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
郝亚军2 天前
nginx的三个基础库:PCRE、OpenSSL、Zlib的安装
linux·服务器·nginx
CodexDave2 天前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
chexus2 天前
20. 深入 Nginx 信号处理
linux·c语言·网络·nginx
tryxr3 天前
Spring Cloud Gateway
java·开发语言·数据库·网关·spring cloud·gateway
名字还没想好☜3 天前
Nginx 反向代理与负载均衡配置实战
运维·nginx·负载均衡
砍材农夫3 天前
运维|devops|nginx|基本配置拆解
运维·nginx·devops
三8443 天前
笔记:在同一个物理服务器上通过nginx的虚拟主机生成多个不同的web站点
java·前端·nginx