thinkphp6.1可通过多应用模式等组合实现分布式多应用架构;需满足php≥7.2.5、使用tp6.1及think-multi-app扩展,通过目录隔离、独立入口、配置与中间件分离、nginx路由及部署拆分达成物理与运行时隔离。

ThinkPHP6.1 本身不提供开箱即用的“分布式多应用架构”,但可通过多应用模式 + 路由隔离 + 中间件分级 + 配置独立 + 入口分离组合实现逻辑清晰、部署灵活的分布式结构。关键不是框架自动分发,而是你主动约定边界、控制流向、隔离状态。
基础准备:确认环境与扩展就位
确保满足以下硬性条件,缺一不可:
- PHP 版本 ≥ 7.2.5(推荐 8.0+,TP6.1 已兼容至 PHP 8.2)
- 项目使用
topthink/framework:^6.1,非 TP8(TP8 已废弃多应用) - 执行
composer require topthink/think-multi-app:^1.0,版本需匹配 TP6.1(如 v1.0.14) - 检查
composer.lock中topthink/framework和topthink/think-multi-app均为 6.x 系列
目录与入口:构建物理隔离层
多应用的“分布式”起点是目录结构和入口文件的显式划分:
- 删除
app/controller(TP6 强制以此判断是否启用多应用) - 用命令生成子应用:
php think build api、php think build admin、php think build mobile - 每个子应用对应一个独立入口文件,如
public/api.php内容为:
define('APP_NAME', 'api');
require __DIR__ . '/../vendor/autoload.php';
(new think\App())->run()->send();
- Nginx 配置按路径路由到对应入口:
location ^~/api/ { try_files $uri /api.php?$query_string; } - 子应用目录名(
app/api)必须与APP_NAME完全一致,大小写敏感
配置与中间件:实现运行时隔离
避免跨应用污染,每个应用需拥有自己的运行上下文:
- 在
config/app.php中设置:'app_multi' => true、'app_namespace' => 'app'、'default_app' => 'index' - 各子应用独享配置:数据库、缓存、日志路径均放在
app/api/config/database.php等位置,不继承主配置 - 定义应用专属中间件,如
app/api/middleware/AuthToken.php,仅在app/api/middleware.php中注册 - 禁止跨应用调用模型或服务:两个 App 实例容器完全隔离,
app('admin')->make(UserService::class)会失败
接口与部署:面向生产做物理拆分
真正“分布式”体现在部署层面,而非仅代码组织:
- API 应用(
app/api)可单独打包,部署在api-backend服务器,只暴露 REST 接口 - 后台应用(
app/admin)部署在内网管理节点,配合 IP 白名单和审计中间件 - Nginx 层做反向代理分流:
location ^~/admin/ → http://admin-node:8080,后端无需暴露 public 目录 - 共享资源走外部服务:Session 存 Redis、上传文件存 OSS、日志推 ELK,避免本地文件耦合
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











