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

相关推荐
J2虾虾10 小时前
Caddy GO语言写的Nginx平替
nginx·caddy
2601_9498177210 小时前
Nginx权限问题详解及解决方案
运维·nginx
liqianpin116 小时前
Nginx WebSocket 长连接及数据容量配置
运维·websocket·nginx
chxii19 小时前
Nginx 反向代理详解
运维·nginx
.柒宇.19 小时前
构建 keepalived + LVS + Nginx + DNS + NFS 的高可用集群系统
运维·nginx·lvs
chxii19 小时前
配置Nginx 的 Keepalive 提升每秒查询率(QPS)
前端·nginx
01传说1 天前
nginx部署教程实战
运维·nginx
吹晚风吧2 天前
解决vite打包,base配置前缀,nginx的dist包找不到资源
服务器·前端·nginx
chxii2 天前
Nginx 正则 location 指令匹配客户端请求的 URI
前端·nginx
静心观复2 天前
Lua 脚本是什么
开发语言·lua