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

相关推荐
Knight_AL18 小时前
Docker 中的端口映射原理:为什么 Nginx 要 `listen 80`,而不是“随便写端口”
nginx·docker·容器
虹梦未来20 小时前
【运维心得】Ubuntu2404编译nginx隐藏Server信息
运维·服务器·nginx
tgethe1 天前
Nginx笔记
运维·笔记·nginx
invicinble1 天前
对于nginx(一,认识nginx)
运维·nginx
徒手千行代码无bug1 天前
Nginx upstream 负载均衡 404,单节点转发正常的根因与解决
运维·nginx·负载均衡
irisart1 天前
第二章【NGINX 开源功能】—— 七层反向代理(下)
运维·nginx
xixiyuguang1 天前
nginx tar离线安装 ubuntu22.04
运维·nginx
丁丁丁梦涛1 天前
nginx解决域名代理到IP+端口的平台静态资源和接口地址问题
运维·tcp/ip·nginx
苹果醋31 天前
24.记录Vue项目iview组件日期获取时间少一天
java·运维·spring boot·mysql·nginx
丁丁丁梦涛1 天前
nginx在多层服务器代理接口地址的应用
运维·服务器·nginx