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

农民  金牌会员 | 2024-6-25 16:53:59 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 665|帖子 665|积分 1995

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

  • 插件实行顺序:确保你的自定义插件在 proxy-rewrite 插件之后实行,proxy-rewrite.priority是1008。
  • 上下文环境:确保在正确的阶段(如 rewrite 阶段)进行上游修改。
下面是一个示例,展示如何在自定义插件中调用 proxy-rewrite 插件并修改上游配置。
自定义插件示例

假设你的插件名为 my-plugin,我们必要在 rewrite 阶段调用 proxy-rewrite 插件来修改上游。
  1. local core = require("apisix.core")
  2. local proxy_rewrite = require("apisix.plugins.proxy-rewrite")
  3. local plugin_name = "my-plugin"
  4. local _M = {
  5.     version = 0.1,
  6.     priority = 1000, -- 设置插件的优先级,值超大,优先级越高,越先执行
  7.     name = plugin_name,
  8. }
  9. -- 定义插件的 schema
  10. _M.schema = {
  11.     type = "object",
  12.     properties = {
  13.         new_host = {type = "string"}
  14.     },
  15.     required = {"new_host"}
  16. }
  17. function _M.check_schema(conf)
  18.     return core.schema.check(_M.schema, conf)
  19. end
  20. function _M.rewrite(conf, ctx)
  21.     local rewrite_conf = {
  22.         host = conf.new_host
  23.     }
  24.     -- 调用 proxy-rewrite 插件的 rewrite 方法
  25.     proxy_rewrite.rewrite(rewrite_conf, ctx)
  26.     core.log.info("Upstream host rewritten to: ", conf.new_host)
  27. end
  28. return _M
复制代码
利用示例

在配置文件中启用并配置该插件:
  1. {
  2.     "plugins": {
  3.         "my-plugin": {
  4.             "new_host": "new_upstream"
  5.         }
  6.     },
  7.     "upstream": {
  8.         "nodes": {
  9.             "127.0.0.1:1980": 1
  10.         },
  11.         "type": "roundrobin"
  12.     }
  13. }
复制代码
注意事项


  • 插件优先级:确保你的插件优先级低于proxy_rewrite,你插件的priority要小于1008
  • 插件依赖:确保 proxy_rewrite 插件已加载,并且可以被调用。
  • 日志查抄:通过 APISIX 日志查抄插件是否正确实行,并输出相关调试信息。
通过以上方法,你应该能够在自定义插件中调用 proxy-rewrite 插件,并成功修改上游配置。如果问题仍然存在,请查抄 APISIX 的错误日志以获取更多信息。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表