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

相关推荐
Wang's Blog1 小时前
Lua: 元表机制实现运算符重载与自定义数据类型
开发语言·lua
Wang's Blog3 小时前
Lua: 面向对象编程详解之类、继承、封装与多态实现
lua
Justin_JGT3 小时前
flask+uwsgi+Nginx
python·nginx·flask
淡笑沐白3 小时前
Nginx 详细教程
运维·nginx
ts9775 小时前
Nginx + Vue History 模式刷新 404 的完整排查与解决方案
运维·vue.js·nginx
Wang's Blog20 小时前
Lua: 核心机制解析之函数的多维魔法与模块化封装艺术
开发语言·lua
m0_537473491 天前
Nginx 生产环境平滑升级实战:从 1.24.0 到 1.28.0 的零宕机操作全记录
运维·nginx
BIBI20491 天前
Nginx 反向代理完全入门:从一个真实场景开始
nginx·部署·配置·问题解决·服务器运维·web 开发·web 服务器
weixin_440730501 天前
Nginx、Apache和tomcat的简单了解。
nginx·tomcat·apache
bkspiderx1 天前
用Nginx解决HTTP跨域问题:两种实用方案详解
nginx·http·跨域·http跨域