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

多租户应用无法识别映射域名路由的问题求助

多租户白标部署路由404问题排查

问题描述

我的应用(my.app)支持用户创建自有子域名(tenant.my.app),并通过CNAME将其映射到用户自有域名(support.customer.com)实现白标部署。

在tenant.my.app上所有路由都能正常工作,但访问映射后的support.customer.com时应用返回404。已确认请求确实到达应用,可通过dd($request->getHost())获取主机信息,但诸如support.customer.com/123这类路由均无法加载。

测试操作

在routes.php中添加了测试路由:

Route::get('/123', function() {
    dd("Hello");
});

但访问support.customer.com/123仍返回404。

本地环境情况

使用valet的本地环境中,链接任意域名(如customer.test),所有功能都能正常运行。

相关配置

在session.php中配置了如下内容以适配域名请求,不确定安全性及是否与此问题相关,也曾尝试硬编码测试域名,但无效:

'domain' = $_server['http_host'],

可能的原因及解决方案

1. Web服务器(Nginx/Apache)配置问题

生产环境的Web服务器可能未正确处理自定义域名的请求路径。比如Nginx的server_name仅配置了my.app和*.my.app,未包含用户的自定义域名support.customer.com,导致请求被路由到默认站点或错误位置,虽能抵达应用,但路由解析异常。

  • 解决:检查Web服务器配置,确保server_name包含所有白标域名,或使用通配符(如Nginx设置server_name _;匹配所有域名,需结合其他配置避免冲突),或动态配置服务器块。

2. Laravel路由域名约束

若路由定义中添加了域名约束(如仅允许*.my.app访问),自定义域名的请求会被路由系统直接忽略,返回404。

  • 解决:检查路由文件,移除不必要的域名约束;或在RouteServiceProvider中根据请求主机动态注册路由,或用中间件验证并放行合法白标域名。

3. 反向代理/负载均衡头部传递问题

生产环境若使用反向代理或负载均衡,可能未正确传递Host头部,导致Laravel获取到的主机是代理服务器的域名/IP,而非support.customer.com,进而影响路由解析。

  • 解决:配置反向代理服务器传递X-Forwarded-Host等头部,在Laravel的TrustProxies中间件中添加代理IP并启用头部信任:
protected $proxies = ['你的代理IP'];
protected $headers = Request::HEADER_X_FORWARDED_ALL;

4. Session配置语法错误

你提供的session.php配置存在语法错误:'domain' = $_server['http_host'],应改为'domain' => $_SERVER['HTTP_HOST'],(注意箭头语法与大写的SERVER/HTTP_HOST)。虽硬编码无效,但语法错误可能间接影响依赖Session的路由,建议修正。

  • 解决:修正Session配置语法,若无需跨域Session,可将domain留空。

5. Laravel缓存问题

生产环境可能缓存了路由或配置,导致新的域名规则未生效。

  • 解决:运行以下命令清除缓存:
php artisan route:clear
php artisan config:clear
php artisan cache:clear

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:25:06