ThinkPHP6.0.16虽无开箱即用的多应用API分离部署方案,但可通过多应用模式+路由分组+中间件隔离+配置分级实现;需启用app_multi、规范目录结构、按路径或域名隔离接口、分应用定义中间件、差异化配置及独立入口文件。

ThinkPHP6.0.16 本身不内置“多应用API分离部署”的开箱即用方案,但通过其原生的多应用模式 + 路由分组 + 中间件隔离 + 配置分级,完全可以实现清晰、可控的 API 分离部署。关键不是版本自带功能,而是如何组织结构与约定规范。
多应用目录结构是基础
ThinkPHP6 支持 app 目录下并列多个子应用(如 api、admin、mobile),每个子应用拥有独立的路由、中间件、配置和控制器:
-
app/api/→ 专供小程序/H5/App调用的RESTful接口 -
app/admin/→ 后台管理接口(含权限校验、日志审计) -
app/mobile/→ 旧版App专用兼容接口(可逐步下线)
所有子应用共享 common 公共模型与 extend 扩展类,避免重复逻辑。注意:需在 config/app.php 中启用 'app_multi' => true,并配置 app_namespace 和自动加载映射。
接口路由与域名/路径隔离
不依赖子域名时,推荐用路径前缀区分:
立即学习“PHP免费学习笔记(深入)”;
-
https://api.yoursite.com/v1/user/login→ 路由注册在app/api/route/app.php,统一加v1/前缀 -
https://api.yoursite.com/admin/v2/log/list→ 注册在app/admin/route/app.php,前缀为admin/v2/
若需物理隔离(如不同服务器部署),可配合 Nginx:
location ^~ /api/ {
proxy_pass http://api-backend/;
}
location ^~ /admin/ {
proxy_pass http://admin-backend/;
}此时后端只需保留 app/api 和 app/admin,不暴露其他入口。
权限与中间件按应用拆分
各应用的中间件应独立定义,避免混用:
-
app/api/middleware.php:只加载CheckToken、Cors、RateLimit -
app/admin/middleware.php:加载AuthAdmin、LogOperation、PermissionCheck
跨应用共用的中间件(如 Cors)可放 app/common/middleware/,通过命名空间引入,不破坏隔离性。
配置与环境变量差异化
使用 ThinkPHP 的环境配置机制:
-
.env中设APP_NAMESPACE=api或APP_NAMESPACE=admin - 对应
config/api/和config/admin/目录存放专属配置(如数据库连接池大小、支付回调地址、缓存前缀) - 敏感配置(如密钥、私钥)统一走环境变量,不在代码中硬编码
例如 config/api/cache.php 可设:
'redis' => [
'prefix' => 'api_cache:',
]而 config/admin/cache.php 设为 'prefix' => 'admin_cache:',天然避免键冲突。
部署时注意入口文件与自动加载
每个应用需对应独立入口(非必须,但推荐):
-
public/api.php→ 加载app/api -
public/admin.php→ 加载app/admin
同时调整 composer.json 的 autoload,确保 PSR-4 映射正确:
"autoload": {
"psr-4": {
"app\api\": "app/api/",
"app\admin\": "app/admin/"
}
}运行 composer dump-autoload 生效。
不复杂但容易忽略。



















