同一Ubuntu服务器Laravel站点跨主域名子域名无跳转映射咨询
结论
该需求完全可以在现有服务器上实现,无需额外采购服务器,按照以下步骤操作即可。
步骤1:Cloudflare DNS配置
- 为
sub1.domain1.de、sub2.domain2.nl分别添加A记录,记录值填写你现有Ubuntu服务器的公网IP,代理状态可根据你原有需求选择开启或关闭,不影响映射逻辑。
步骤2:Laravel Forge侧配置(二选一即可)
方案A:站点别名配置(推荐,配置最简单)
适合sub1.domain1.de和sub1.domain3.com需要展示完全一致的站点内容的场景:
- 登录Laravel Forge,找到
sub1.domain3.com对应的站点,进入「Meta」标签页 - 在「站点别名」输入框中填入
sub1.domain1.de,保存后Forge会自动更新Nginx配置 - 重复上述操作,给
sub2.domain3.com站点添加别名sub2.domain2.nl即可
如果需要Laravel内部根据访问域名做差异化逻辑,可在路由文件中配置域名路由规则,无需调整服务端配置。
方案B:反向代理配置
适合需要对请求做自定义处理、或者两个子域名站点底层部署逻辑不同的场景:
- 在Forge中新建两个站点,域名分别填写
sub1.domain1.de和sub2.domain2.nl,站点根目录可随意填写一个服务器上存在的路径 - 进入对应站点的「Nginx配置」编辑页,找到默认的
location /配置块,替换为以下内容:
location / { # sub1.domain1.de的配置填下方地址,sub2.domain2.nl的配置替换为https://sub2.domain3.com proxy_pass https://sub1.domain3.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect off; }
- 保存配置后重启Nginx即可生效
步骤3:SSL证书配置(必做)
无论是哪种方案,都需要给新的子域名配置SSL证书避免访问报错:进入对应站点的「SSL」标签页,申请免费的Let's Encrypt证书即可,如果你开启了Cloudflare代理,也可以选择配置Cloudflare Origin CA证书。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

