Apisix自定义httpcode 请求重试

我们通过插件来做比较麻烦并且还需要考虑重新lb的问题,有一个比较简单的方法是利用nginx的请求重试信号。

Apisix本身默认也有该种设定,不过默认只针对 timeout情况会请求重试

默认请求重试次数是:updateam node 节点数量 -1

相关逻辑在apisix-balancer.lua的 set_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-status、upstream 会依次将每次请求的结果、上游地址记录出来

相关推荐
健康活着就好17 小时前
# Nginx负载均衡四种策略,从原理到配置
nginx
Vitaliy Kostrov(柯维远)18 小时前
谁来承担额外工作?CDN 参与者如何协商资源
nginx·缓存·系统架构·开源·cdn
北城笑笑20 小时前
Server 18 ,Nginx 双服务器 HTTP转HTTPS 代理实战( HTTP 地址换 HTTPS 域名 )
运维·服务器·前端·后端·nginx·http·https
Zenova EdgeOS21 小时前
Linux Nginx 反向代理实战:工业边缘 API 接入与安全加固
linux·nginx·安全·边缘计算·工业网关
普通人61 天前
宝塔中实现按地区过滤和官网跳转伪静态
服务器·开发语言·nginx·1024程序员节
goehou1 天前
模型网关实战:多模型路由、降级和成本对账的统一入口
网关·ai·llm·路由·成本
笨鸟先飞的橘猫1 天前
C 扩展开发指南:从 Lua 到 skynet 的完整链路
c语言·lua
Initialize-le1 天前
Nginx 504 超时、499 一堆?网关排查法
运维·nginx
郭老二2 天前
【docker】docker compose使用,已nginx为例
nginx·docker·容器