|
@@ -11,12 +11,15 @@ local _M = {}
|
|
|
-- 设置后端upstream
|
|
|
function set_upstream(tenant, env)
|
|
|
if env == "prod" then
|
|
|
- ngx.var.upstream = "backend_prod"
|
|
|
+ ngx.var.upstream = "php80_prod"
|
|
|
+ ngx.var.root = "/www/autocde2.0_laravel_prod"
|
|
|
elseif env == "dev" then
|
|
|
- ngx.var.upstream = "backend_dev"
|
|
|
+ ngx.var.upstream = "php80"
|
|
|
+ ngx.var.upstream = "/www/autocde2.0_laravel"
|
|
|
else
|
|
|
ngx.log(ngx.ERR, "Upstream not found for env: " .. tostring(env))
|
|
|
- return ngx.exit(ngx.HTTP_BAD_REQUEST) -- 使用标准HTTP状态码
|
|
|
+ ngx.var.upstream = "php80_prod"
|
|
|
+ ngx.var.upstream = "/www/autocde2.0_laravel_prod"
|
|
|
end
|
|
|
ngx.log(ngx.NOTICE, "Backend routing: ", "tenant=", tenant, ", env=", env, ", upstream=", ngx.var.upstream)
|
|
|
end
|
|
@@ -28,14 +31,17 @@ function set_frontend_upstream(tenant, env)
|
|
|
elseif env == "dev" then
|
|
|
ngx.var.frontend_upstream = "frontend_dev"
|
|
|
else
|
|
|
- ngx.log(ngx.ERR, "Frontend upstream not found for env: " .. tostring(env))
|
|
|
- return ngx.exit(ngx.HTTP_BAD_REQUEST) -- 使用标准HTTP状态码
|
|
|
+
|
|
|
end
|
|
|
ngx.log(ngx.NOTICE, "Frontend routing: ", "tenant=", tenant, ", env=", env, ", frontend_upstream=", ngx.var.frontend_upstream)
|
|
|
end
|
|
|
|
|
|
-- 根据租户信息获取环境变量
|
|
|
function get_env(tenant)
|
|
|
+ if not tenant then
|
|
|
+ ngx.log(ngx.NOTICE, "Missing tenant identifier")
|
|
|
+ tenant = "not_found"
|
|
|
+ end
|
|
|
local cache_key = "tenant_identification_location_" .. tenant
|
|
|
local red = redis:new()
|
|
|
red:set_timeouts(REDIS_TIMEOUT, REDIS_TIMEOUT, REDIS_TIMEOUT)
|
|
@@ -76,7 +82,8 @@ end
|
|
|
|
|
|
-- 处理API请求的路由逻辑
|
|
|
function _M.route_by_tenant_for_api()
|
|
|
- local tenant = ngx.req.get_headers()["X-Tenant"] or ngx.req.get_uri_args()["tenant"]
|
|
|
+ local args = ngx.req.get_uri_args()
|
|
|
+ local tenant = ngx.req.get_headers()["X-Tenant"] or args["tenant"]
|
|
|
|
|
|
if not tenant or tenant == "" then
|
|
|
ngx.log(ngx.ERR, "Missing tenant identifier")
|
|
@@ -89,15 +96,16 @@ end
|
|
|
|
|
|
-- 处理前端请求的路由逻辑
|
|
|
function _M.route_by_tenant_for_frontend()
|
|
|
- local tenant = ngx.req.get_headers()["X-Tenant"] or ngx.req.get_uri_args()["tenant"]
|
|
|
+ local args = ngx.req.get_uri_args()
|
|
|
+ local tenant = ngx.req.get_headers()["X-Tenant"] or args["tenant"]
|
|
|
|
|
|
if not tenant or tenant == "" then
|
|
|
ngx.log(ngx.ERR, "Missing tenant identifier")
|
|
|
- return ngx.exit(ngx.HTTP_BAD_REQUEST) -- 使用标准HTTP状态码
|
|
|
+ -- return ngx.exit(ngx.HTTP_BAD_REQUEST) -- 使用标准HTTP状态码
|
|
|
end
|
|
|
|
|
|
local env = get_env(tenant)
|
|
|
- set_frontend_upstream(env)
|
|
|
+ set_frontend_upstream(tenant, env)
|
|
|
end
|
|
|
|
|
|
return _M
|