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

相关推荐
Harvy_没救了16 小时前
【网络部署】 Win11 + VMware CentOS8 + Nginx 文件共享服务 Wiki
运维·网络·nginx
遇见火星21 小时前
Nginx限流配置:防止接口被刷,服务器稳如泰山
运维·服务器·nginx
chxii1 天前
lua流程控制语句和table(表)数据结构
开发语言·junit·lua
chxii1 天前
lua 基础语法(上)
开发语言·lua
Jinkxs2 天前
LoadBalancer- 主流负载均衡工具盘点:Nginx / Haproxy / Keepalived 基础介绍
运维·nginx·负载均衡
ReaF_star2 天前
【安全】SSL证书更新操作手册(Nginx+Cloudflare+acme.sh)
nginx·安全·ssl
云动课堂2 天前
【运维实战】Nginx 高性能Web服务 · 一键自动化部署方案 (适配银河麒麟 V10 / openEuler / CentOS 7/8)
运维·前端·nginx
xingpanvip2 天前
星盘接口开发文档:日运语料接口指南
android·开发语言·前端·css·php·lua
2601_949817922 天前
nginx 代理 redis
运维·redis·nginx
java1234_小锋2 天前
解释一下NGINX的反向代理和正向代理的区别?
运维·nginx