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

相关推荐
Arvin6279 小时前
Nginx 添加账号密码访问验证
运维·服务器·nginx
阿凤2113 小时前
nginx部署如何配置ssl证书
运维·nginx·ssl
zhyoobo14 小时前
Nginx Gzip压缩全解析:原理、配置与性能优化指南
运维·nginx·性能优化
chxii15 小时前
Nginx的缓存配置--客户端缓存 (Browser Caching)和代理服务器缓存 (Proxy Server Caching)
nginx·缓存
MonkeyKing_sunyuhua16 小时前
Nginx + Let’s Encrypt 免费 SSL 证书 的完整配置过程
运维·nginx·ssl
sibylyue17 小时前
Nginx\Tomcat\Jetty\Netty
java·nginx·http
列星随旋18 小时前
基于 Redis + Lua,实现“多维度原子限流”(令牌桶 + 滑动窗口)
java·redis·lua
上海合宙LuatOS18 小时前
LuatOS扩展库API——【exgnss】GNSS定位
物联网·lua·luatos
cyber_两只龙宝18 小时前
【Nginx】Nginx反向代理之实现http的反向代理
linux·运维·nginx·http·云原生·反向代理
難釋懷19 小时前
Nginx本地缓存API
nginx·spring·缓存