Files
2026-07-13 12:32:21 +08:00

40 lines
942 B
Lua

local kset_next_upstream
if ngx.config.subsystem ~= "stream" then
kset_next_upstream = require("resty.kong.upstream").set_next_upstream
end
local ngx = ngx
local log = ngx.log
local ERR = ngx.ERR
local function set_proxy_next_upstream(next_upstream)
local err = kset_next_upstream(unpack(next_upstream))
if err then
log(ERR, "failed to set next upstream: ", err)
end
if ngx.ctx and ngx.ctx.balancer_data then
ngx.ctx.balancer_data.next_upstream = next_upstream
end
end
local function fallback_proxy_next_upstream()
if not ngx.ctx.balancer_data then
return
end
if not ngx.ctx.balancer_data.next_upstream then
return
end
local err = kset_next_upstream(unpack(ngx.ctx.balancer_data.next_upstream))
if err then
log(ERR, "failed to set next upstream: ", err)
end
end
return {
set_proxy_next_upstream = set_proxy_next_upstream,
fallback_proxy_next_upstream = fallback_proxy_next_upstream,
}