CsdnHolySucks 2019-06-13 18:37 采纳率: 0%
浏览 401

Kong框架的定制插件如何做后端的分流 类似AB Test

想在Kong的自定义插件里实现后端接口分流,想在lua脚本里动态修改upstream_url
但是始终不能成功

function abTestPlugin:access(plugin_conf)
    abTestPlugin.super.access(self)
    local value, flags = ngx.shared.lua_shared_dict:get("kong_healthchecks")
    ngx.log(ngx.ERR, "abTestPlugin ngx.shared.lua_shared_dict:get(kong_healthchecks): ", value)
        // 修改upstream
end

想通过ngx.redict(forward_url)这样会把请求方式改成Get请求,在Kong插件如何实现分流?
求指导,刚接触lua和Kong,求老鸟指明方向呀 这两天试了挺多代码都不能实现 着急!!!

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 08:18
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要使用Lua进行后端接口分流,你需要遵循以下步骤:

    1. 使用ngx.redict来重定向请求到新的路径。
    2. 在你的Lua脚本中,你可以使用ngx.shared.lua_shared_dict变量来获取和设置共享变量。

    首先,确保你已经安装了Kong并配置好。然后,按照以下步骤操作:

    步骤 1:创建Lua脚本

    创建一个名为abTestPlugin.lua的文件,并添加以下内容:

    -- abTestPlugin.lua
    local ngx = require('ngx')
    
    function abTestPlugin:access(plugin_conf)
        -- 向上推流
        ngx.req.forward_url = '/test' -- 设置一个新的URL以代替当前URL
        ngx.req.upstream_url = '/test' -- 更改上游URL
    end
    

    步骤 2:在Kong插件中调用Lua脚本

    在你的Kong插件中,将Lua脚本作为参数传递给access函数。例如,如果你的插件名为my_kong_plugin.lua,那么在调用时应该这样做:

    local plugin_conf = {
        name = 'my_kong_plugin',
        access = function()
            abTestPlugin:access(plugin_conf)
        end,
    }
    

    步骤 3:测试后端接口分流

    现在,当你运行你的Kong服务器时,你应该能够看到/test路径下的新请求被转发到了正确的URL。这表明你的Lua脚本来调整后端接口是成功的。

    请注意,这只是一个基本示例,实际应用可能需要根据具体需求进行更多的定制。例如,你可能需要处理更复杂的路由逻辑或者在后台管理界面显示结果等。

    评论

报告相同问题?

悬赏问题

  • ¥20 想写一个文件管理器,加载全部子文件夹后,要一级一级返回
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?
  • ¥15 请问GPT语言模型怎么训练?
  • ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角
  • ¥15 webots有问题,无响应
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?