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

相关推荐
连续讨伐8 小时前
前期小随笔
服务器·网络·nginx
s_daqing1 天前
ubuntu(arm)使用nginx安装静态服务器
服务器·nginx·ubuntu
物有本木1 天前
httpsok-v2.0.8发布-支持IIS证书自动续签
nginx·ssl
Volunteer Technology1 天前
Nginx部署静态项目
运维·服务器·nginx
摇滚侠1 天前
尚硅谷 Nginx 教程(亿级流量 Nginx 架构设计),基本使用,笔记 6-42
java·笔记·nginx
衫水1 天前
Ubuntu 系统部署 Vue/Vite 应用到 Nginx
vue.js·nginx·ubuntu
资料库011 天前
LVS、Nginx、HAProxy核心区别是什么?
运维·nginx·lvs
移幻漂流1 天前
Lua的现状与机遇:技术生态全景及高潜力领域分析
junit·单元测试·lua
我发在否1 天前
OpenResty > Lua断点调试
vscode·lua·断点·openresty·luapanda
Filotimo_2 天前
Nginx 的概念
运维·nginx