<bdo id="4g88a"><xmp id="4g88a">
  • <legend id="4g88a"><code id="4g88a"></code></legend>

    apisix~14在自定義插件中調用proxy_rewrite

    在 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 的錯誤日志以獲取更多信息。

    posted @ 2024-06-25 11:28  張占嶺  閱讀(115)  評論(0編輯  收藏  舉報
    免费视频精品一区二区_日韩一区二区三区精品_aaa在线观看免费完整版_世界一级真人片
    <bdo id="4g88a"><xmp id="4g88a">
  • <legend id="4g88a"><code id="4g88a"></code></legend>