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

同一服务器部署双Laravel站点:SSR端口冲突与域名跳转问题

问题原因与解决方法

一、SSR守护进程端口冲突

原因

Inertia 1.0的SSR服务默认使用固定端口(通常为13714),同一Droplet上的两个应用同时启动时,第二个进程会因端口被第一个进程占用而启动失败。

解决方法

  • 为每个应用配置独立的SSR端口:
    1. 在每个Laravel项目根目录的.env文件中添加自定义端口:
      • 站点1:INERTIA_SSR_PORT=13714
      • 站点2:INERTIA_SSR_PORT=13715
    2. 修改项目的SSR启动脚本(一般为server/ssr.js),读取环境变量作为端口:
      const port = process.env.INERTIA_SSR_PORT || 13714;
      app.listen(port, () => {
        console.log(`Inertia SSR running on port ${port}`);
      });
      
    3. 在Laravel Forge的守护进程配置中,确保每个站点的启动命令指向对应项目目录,比如站点2的命令:cd /home/forge/website2.com && php artisan inertia:start-ssr
    4. 重启两个守护进程,可通过lsof -i :13714和lsof -i :13715命令验证端口占用情况。

二、输入website2.com自动跳转至website1.com

原因

  • 浏览器输入不带协议的域名时,默认会发起http://website2.com请求,而Droplet的Nginx配置存在以下问题:
    1. 第一个站点(website1.com)的HTTP(80端口)服务器块被设置为默认站点,当请求域名不匹配时,Nginx会用该配置处理,导致http://website2.com被跳转到website1.com的HTTPS地址。
    2. 未为website2.com配置独立的HTTP到HTTPS跳转规则。

解决方法

  • 调整Nginx配置,为每个站点设置独立的HTTP跳转规则:
    1. 在Laravel Forge中分别打开两个站点的「Edit Nginx Configuration」页面。
    2. 为website2.com添加HTTP服务器块,处理跳转:
      server {
          listen 80;
          listen [::]:80;
          server_name website2.com www.website2.com;
          return 301 https://$host$request_uri;
      }
      
    3. 确保website1.com的HTTP服务器块仅匹配自身域名,去掉default_server标识(如果存在)。
    4. 重载Nginx配置:sudo nginx -s reload
    5. 清除浏览器缓存或使用隐私模式测试,确认跳转正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:23:15