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

相关推荐
秋雨雁南飞1 小时前
Nginx安装
nginx
全栈工程师修炼指南5 小时前
Nginx | ngx_cache_purge 模块:实现清除特定上游服务(后端)响应缓存条目
运维·nginx·缓存
irisart6 小时前
第二章【NGINX 开源功能】—— 四层反向代理
运维·nginx·开源
MACKEI7 小时前
图片加速效果验证与查看
nginx
qinyia7 小时前
WisdomSSH解决Ubuntu 25.04服务器上因dpkg中断导致的Nginx安装失败问题并成功部署科技感个人主页
服务器·nginx·ubuntu
Wang's Blog1 天前
Lua: 基于协程的生产者-消费者模型实现
开发语言·lua
tzhou644521 天前
Docker 部署 Nginx HTTPS 服务(CentOS 7)
nginx·docker·https
Wang's Blog1 天前
Lua: 协程编程详解之从基础到多任务处理与应用实战
开发语言·lua
等什么君!1 天前
nginx启动失败 ,报404和 idea端口号被占用的解决办法
运维·nginx
全栈工程师修炼指南1 天前
Nginx | HTTP 反向代理:当缓存失效时如何减轻后端(上游)服务压力?
运维·网络协议·nginx·http·缓存