Sfoglia il codice sorgente

完成动态路由脚本配置

peterguo 1 mese fa
parent
commit
157abe3349
1 ha cambiato i file con 17 aggiunte e 9 eliminazioni
  1. 17 9
      openresty/lua/tenant_router.lua

+ 17 - 9
openresty/lua/tenant_router.lua

@@ -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