在 Apache APISIX 中,通过 proxy-rewrite 插件来修改上游配置时,需要确保插件的执行顺序和上下文环境正确。你提到在自己的插件中调用 proxy_rewrite.rewrite({host="new_upstream"}, ctx),但新上游没有生效,这可能是由于以下几个原因:

  1. 插件执行顺序:确保你的自定义插件在 proxy-rewrite 插件之后执行,proxy-rewrite.priority是1008。
  2. 上下文环境:确保在正确的阶段(如 rewrite 阶段)进行上游修改。

下面是一个示例,展示如何在自定义插件中调用 proxy-rewrite 插件并修改上游配置。

自定义插件示例

假设你的插件名为 my-plugin,我们需要在 rewrite 阶段调用 proxy-rewrite 插件来修改上游。

local core = require("apisix.core")
local proxy_rewrite = require("apisix.plugins.proxy-rewrite") local plugin_name = "my-plugin" local _M = {
version = 0.1,
priority = 1000, -- 设置插件的优先级,值超大,优先级越高,越先执行
name = plugin_name,
} -- 定义插件的 schema
_M.schema = {
type = "object",
properties = {
new_host = {type = "string"}
},
required = {"new_host"}
} function _M.check_schema(conf)
return core.schema.check(_M.schema, conf)
end function _M.rewrite(conf, ctx)
local rewrite_conf = {
host = conf.new_host
} -- 调用 proxy-rewrite 插件的 rewrite 方法
proxy_rewrite.rewrite(rewrite_conf, ctx) core.log.info("Upstream host rewritten to: ", conf.new_host)
end return _M

使用示例

在配置文件中启用并配置该插件:

{
"plugins": {
"my-plugin": {
"new_host": "new_upstream"
}
},
"upstream": {
"nodes": {
"127.0.0.1:1980": 1
},
"type": "roundrobin"
}
}

注意事项

  1. 插件优先级:确保你的插件优先级低于proxy_rewrite,你插件的priority要小于1008
  2. 插件依赖:确保 proxy_rewrite 插件已加载,并且可以被调用。
  3. 日志检查:通过 APISIX 日志检查插件是否正确执行,并输出相关调试信息。

通过以上方法,你应该能够在自定义插件中调用 proxy-rewrite 插件,并成功修改上游配置。如果问题仍然存在,请检查 APISIX 的错误日志以获取更多信息。

apisix~14在自定义插件中调用proxy_rewrite的更多相关文章

  1. SpringBoot在自定义类中调用service层等Spring其他层

    解决方案: 1.上代码 @Component public class ServerHandler extends IoHandlerAdapter { @Autowired protected He ...

  2. Dynamic CRM插件中记录日志-Nlog记录到文本

    Dynamic CRM插件中记录日志的方式有多种 通常情况下分为ITracingService记录.单独日志表插入记录.文本记录三种. 之前整理过ITracingService记录的方式,但这种记录有 ...

  3. SEXTANTE中调用任意C++控制台程序的简单例子

    在sextante中单纯利用python或者调用sextante已有算法进行自定义开发,很多情况下速度不咋给力,同样的操作调用QGIS的C++插件比用sextante里的算法要快,有时候快的 还不止一 ...

  4. 基于jQuery的自定义插件:实现整屏分页转换的功能

    动态创建jQuery插件 一.实现功能: 1.基本功能:自适应式整屏分页功能的实现 2.通过鼠标点击标签页转换分页,支持键盘上下左右键的转换分页,同样支持 鼠标滚轮上下滑动转换分页 3.切屏时的动画效 ...

  5. PhoneGap之自定义插件

    PhoneGap:作为原生App,Java(这里面是指Android的)与JavaScript 的通信桥梁,使得我们的混合开发更加得心应手,我是与Android结合的混合开发. 但在这里不得不吐槽一下 ...

  6. Cordova应用的JavaScript代码和自定义插件代码的调试

    我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果 ...

  7. Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码

    微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...

  8. Phonegap中自定义插件的使用

    在phonegap中需要实现特定相关的功能,可能需要自定义扩展一下功能,那么扩展phonegap组件就成为了可能. 源代码结构图: 本文目的在于讲述怎么扩展一个phonegap组件以及实现. 针对ph ...

  9. Cordova与现有框架的结合,Cordova插件使用教程,Cordova自定义插件,框架集成Cordova,将Cordova集成到现有框架中

    一.框架集成cordova 将cordova集成到现有框架中 一般cordova工程是通过CMD命令来创建一个工程并添加Android.ios等平台,这样的创建方式可以完整的下载开发过程中所需要的的插 ...

  10. sql自定义函数及C#中调用

    1.在C#中调用sql自定义函数 1.1 标量值函数 sql语句调用 select  dbo.GetClassIDWithName(1) string strSql = string.Format(& ...

随机推荐

  1. 【学习笔记】Python 使用 matplotlib 画图

    目录 安装 中文显示 折线图.点线图 柱状图.堆积柱状图 坐标轴断点 参考资料 本文将介绍如何使用 Python 的 matplotlib 库画图,记录一些常用的画图 demo 代码 安装 # 建议先 ...

  2. Navicat Premium 16永久激活

    链接: https://pan.baidu.com/s/1wG0IGWOpgF1tmQRxcsvkBw 提取码: gtmk

  3. CF620E New Year Tree (线段树维护 dfs 序)

    CF620E New Year Tree 题意:给出一棵 n 个节点的树,根节点为 1.每个节点上有一种颜色 ci​.m 次操作.操作有两种: 1 u c:将以 u 为根的子树上的所有节点的颜色改为 ...

  4. Java获取电脑盘符(最后一个盘符)

    //遍历获得所有盘符 File[] roots = File.listRoots(); for (int i =0; i < roots.length; i++) { System.out.pr ...

  5. Solution Set - Splay

    A[洛谷P3369]维护集合,支持插入,删除,查询\(x\)的排名,查询排名\(x\)的数,查询前驱,查询后继. B[洛谷P3391]维护一个序列,支持区间翻转. C[洛谷P3380]维护数列,支持单 ...

  6. ansible(13)--ansible的lineinfile模块

    1. lineinfile模块 功能:修改或删除文件内容,与系统中的 sed 命令类似: 主要参数如下: 参数 说明 path 指定要操作的文件 regexp 使用正则表达式匹配对应的行 line 修 ...

  7. CF933-Div3 大致思路+题解

    \(Rank\) A - Rudolf and the Ticket 纯水题 暴力枚举直接过 $code$ #include<bits/stdc++.h> #define fo(x,y,z ...

  8. C语言:使用链式栈检测txt文件中的括号匹配

    便捷目录 前言 本程序最终会完成的任务 栈的理解 代码运行过程的解释 说明 ==代码思想 (重要部分)== 全局变量和结构体代码 进栈:创建链表空间函数 出栈:删除链表空间函数 释放申请的链式栈空间 ...

  9. Chart.js (v2.9.4)概要介绍

    chart.js是一个非常优秀的开源图表插件,扩展非常灵活,同时也提供了大量的钩子函数,给与用户添加自定义插件,实现个性化的需求. 具体的优势特点,这里不详述,网上大把资料,现开始正式深入了解这个插件 ...

  10. Ceph 架构以及部署

    目录 Ceph架构 存储类型 为什么用到Ceph? 1. NFS 2. MooseFS MooseFS瓶颈 3. GlusterFS 4. Ceph Ceph的组件 Ceph部署 前期准备 1.1 修 ...