You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel应用多数据库部署:单域名还是多域名方案咨询

Laravel多租户多数据库:单域名vs多域名方案选型

单域名方案(appname.com + 动态数据库切换)

核心逻辑

用户通过统一入口登录,系统根据用户所属企业标识(如登录账号关联的企业ID、邮箱前缀),动态切换到对应企业的独立数据库。需维护一个共享主数据库,存储所有企业的基础信息(企业ID、数据库配置、用户账号映射等),登录时先验证主库身份,再切换业务库。

优势

  • 品牌统一:用户只需记住一个域名,降低记忆成本,利于品牌传播
  • 运维高效:一套Laravel代码、一套部署配置(Laravel Forge只需维护一个站点),功能迭代一次更新覆盖所有企业
  • 资源利用率高:避免多站点重复占用服务器进程、缓存资源

劣势

  • 需要额外开发隔离逻辑:
    • 实现动态数据库切换(可通过中间件、ServiceProvider实现)
    • 确保会话、缓存、队列的租户隔离,避免跨企业数据串流
  • 调试复杂度略高:出现数据库相关问题时,需先确认当前租户的数据库上下文

Laravel实现示例(中间件切换数据库)

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;

class SwitchEnterpriseDatabase
{
    public function handle($request, Closure $next)
    {
        if (Auth::check()) {
            $enterprise = Auth::user()->enterprise;
            
            // 配置企业数据库连接
            Config::set('database.connections.enterprise', [
                'driver' => 'mysql',
                'host' => env('DB_HOST'),
                'database' => $enterprise->db_name,
                'username' => env('DB_ENTERPRISE_USER'),
                'password' => $enterprise->db_password,
                'charset' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'prefix' => '',
            ]);
            
            // 清除旧连接,切换默认连接
            DB::purge('enterprise');
            DB::setDefaultConnection('enterprise');
        }

        return $next($request);
    }
}

多域名方案(独立域名对应独立数据库)

核心逻辑

每个企业绑定独立域名,Laravel Forge为每个域名创建独立站点,站点配置中指定对应企业的数据库信息,请求通过Nginx路由到对应站点,天然实现数据隔离。

优势

  • 隔离性强:无需额外开发隔离逻辑,每个站点的数据库配置独立,出错概率低
  • 个性化灵活:可针对单个企业做独立配置(如SSL证书、缓存策略、代码分支),适合有定制需求的企业
  • 场景适配:适合需要对外展示的企业(如客户访问企业专属门户),利于独立SEO优化

劣势

  • 运维成本高:每个企业需创建独立站点,配置Nginx、SSL、部署脚本,后续更新需批量操作或逐个处理
  • 资源浪费:多站点重复占用服务器资源,进程、缓存等无法共享,服务器扩容成本更高
  • 品牌分散:用户需记住各自域名,不利于统一品牌运营

选型建议

  • 优先选单域名:如果企业用户数量较多(≥20家)、业务标准化程度高,追求运维效率和品牌统一,单域名方案是更优选择
  • 保留多域名:如果企业用户少(<10家)、存在大量个性化定制需求,多域名方案的复杂度更低,更易维护
  • 混合方案:若部分企业需要独立域名对外展示,可配置Nginx将独立域名反向代理到单域名的租户路由(如companyA.com → appname.com/tenant/companyA),通过路由参数识别租户并切换数据库,兼顾品牌统一和个性化需求

内容的提问来源于stack exchange,提问作者Morex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 14:16:25