40 lines
942 B
Lua
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,
|
|
}
|