Laravel12怎么用stancl/tenancyv4给每个租户配置独立域名

夜枫姑娘_8307

夜枫姑娘_8307

2026-11-04

933人浏览

原创

Laravel 12 中使用 stancl/tenancy v4 实现每个租户独立域名,核心是配置多域名识别、租户自动解析及 HTTP 路由隔离:需安装 v4、添加 domain 字段至 Tenant 模型、配置 identification.driver 为 domain、将 InitializeTenancyByDomain 中间件置于 web 组最前、Nginx 泛指同一入口,并在创建租户时显式设置 domain 值。

laravel12怎么用stancl/tenancyv4给每个租户配置独立域名

在 Laravel 12 中使用 stancl/tenancy v4 实现每个租户独立域名,核心是配置多域名识别 + 租户自动解析 + HTTP 请求路由隔离。v4 的设计已移除对子域名的强依赖,支持任意域名(包括根域、二级域、完全不同的域名),但需手动配置 Web 服务器和应用层逻辑。

1. 安装并初始化 tenancy v4

确保项目已升级到 Laravel 12(PHP ≥ 8.2),然后安装:

composer require stancl/tenancy:^4.0

发布配置与迁移:

php artisan tenancy:install<br>php artisan migrate

运行后会生成 config/tenancy.php 和租户相关数据表(如 tenants)。注意:v4 默认不创建租户中间件或自动域名绑定,需自行集成。

2. 配置租户域名字段与模型

v4 不强制要求域名字段,但推荐在 Tenant 模型中添加 domain 字段用于存储租户专属域名:

php artisan make:migration add_domain_to_tenants_table --table=tenants

在迁移中添加:

$table->string('domain')->unique()->nullable();

更新 app/Models/Tenant.php,确保可批量赋值:

protected $fillable = ['id', 'domain', /* 其他字段 */];

3. 启用域名识别驱动并注册中间件

编辑 config/tenancy.php,将识别方式设为 domain:

Laravel Cloud
Laravel Cloud

Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。

下载
'identification' => [<br>    'driver' => 'domain',<br>    'cache_ttl' => 3600,<br>],

在 app/Http/Kernel.php 的 $middlewareGroups['web'] 中,**确保 \Stancl\Tenancy\Middleware\InitializeTenancyByDomain::class 在路由中间件之前执行**(例如放在 EncryptCookies 后、VerifyCsrfToken 前):

\Stancl\Tenancy\Middleware\InitializeTenancyByDomain::class,

该中间件会根据当前请求的 Host 头,在 tenants 表中查找匹配的 domain 记录,并初始化对应租户上下文(数据库连接、缓存前缀等)。

4. Web 服务器配置(Nginx / Apache)

关键:所有租户域名必须指向同一 Laravel 应用入口(public/index.php),不能做反向代理分发或单独虚拟主机隔离。

Nginx 示例(泛解析或多个 server 块均可):

server {<br>    listen 80;<br>    server_name *.example.com example.com tenant-a.com tenant-b.net;<br>    root /var/www/laravel12/public;<br>    index index.php;<br><br>    location / {<br>        try_files $uri $uri/ /index.php?$query_string;<br>    }<br><br>    location ~ \.php$ {<br>        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;<br>        fastcgi_index index.php;<br>        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;<br>        include fastcgi_params;<br>    }<br>}

✅ 这样 tenant-a.com 和 shop.b-company.net 都能被 Laravel 接收到,再由 InitializeTenancyByDomain 中间件识别并加载对应租户。

5. 创建租户时设置 domain

创建租户时,显式指定域名:

$tenant = Tenant::create([<br>    'id' => Str::uuid(),<br>    'domain' => 'tenant-a.com',<br>]);<br><br>// 初始化租户数据库等资源<br>$tenant->run(function () {<br>    Artisan::call('migrate', ['--force' => true]);<br>});

之后访问 http://tenant-a.com 即可自动进入该租户上下文。Laravel 路由、Eloquent 查询、队列任务等均默认作用于该租户环境。

6. 注意事项与常见问题

  • HTTPS 证书需覆盖所有租户域名(推荐用 Wildcard 或多域名 SAN 证书)
  • 本地开发可用 /etc/hosts 绑定多个域名到 127.0.0.1 测试
  • 若使用 Laravel Octane,需启用 --watch 并确保租户配置热重载(v4 支持,但需确认 tenancy.php 中 cache_ttl 合理)
  • 避免在 config/ 文件中硬编码租户相关路径或 URL,一律通过 Tenant::current() 动态获取
  • 邮件、通知中的链接需使用租户域名:用 URL::to('/') 或 route('home', [], false) 配合 tenancy.url_generator 驱动

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2024.04.09

877

10

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

2024.04.09

855

9

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2024.04.09

2508

10

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.10

4701

7

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

2025.08.05

6870

22

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

2025.08.05

4516

13

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.05

8469

7

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

2026.03.04

1516

29

Laravel 框架安装指南
Laravel 框架安装指南

本指南详解 Laravel 框架安装全流程,涵盖 PHP 8.1+ 环境配置、Composer 依赖管理工具安装及国内镜像源优化。重点演示使用 composer create-project 命令创建 Laravel 10/11 项目,解决常见安装错误与依赖冲突。从环境搭建到项目初始化,助您快速完成 Laravel 开发环境部署,为后续 Web 应用开发奠定基础。适合 PHP 初学者与框架迁移开发者参考。

2026.04.09

215

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 221人学习

Composer手册
Composer手册

共0课时 | 0人学习