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

相关推荐
ZzzZZzzzZZZzzzz…7 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
上海合宙LuatOS11 小时前
LuatOS扩展库API——【exremotefile】远程文件管理系统
物联网·lua·luatos
上海合宙LuatOS13 小时前
LuatOS扩展库API——【exremotecam】网络摄像头控制
开发语言·网络·物联网·lua·luatos
robch14 小时前
python3 -m http.server 8001直接启动web服务类似 nginx
前端·nginx·http
cyber_两只龙宝16 小时前
【Nginx】Nginx实现FastCGI详解
linux·运维·nginx·云原生·php·memcached·fastcgi
BullSmall16 小时前
Prometheus 可以监控docker 部署的Nginx 吗?
nginx·docker·prometheus
魔卡少女117 小时前
Nginx配置代码化自动部署詹金斯/Github方案
前端·nginx·github
倔强的胖蚂蚁18 小时前
AI 人工智能配置管理 Nginx
运维·nginx·云原生
邓霖涛19 小时前
nginx使用openSSL自签生成https相关证书
服务器·nginx·https
Huanzhi_Lin19 小时前
Nginx本地资源服务器-常用脚本
服务器·前端·nginx·batch·静态资源服务器