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

Laravel 9部署AWS Elastic Beanstalk遇ERR_CONNECTION_REFUSED错误求助

排查Laravel 9部署AWS Elastic Beanstalk后ERR_CONNECTION_REFUSED错误

首先明确:ERR_CONNECTION_REFUSED 不是CORS问题——CORS错误是浏览器控制台明确提示跨域相关信息,而连接拒绝是客户端根本无法与服务器建立TCP连接,你之前配置CORS的操作对解决这个问题没有帮助,先把排查方向转到网络连通性和应用运行状态上。

以下是具体排查步骤:

1. 检查Elastic Beanstalk环境与EC2实例状态

  • 登录AWS控制台,进入Elastic Beanstalk环境页面,查看环境健康状态是否为Ok,如果是Degraded或Severe,查看事件日志里的具体报错信息。
  • 关联的EC2实例需处于运行中状态,进入EC2控制台检查实例状态,若实例频繁重启,大概率是应用启动失败导致。

2. 修正负载均衡器与目标组的端口匹配问题

从你提供的负载均衡配置截图来看:

  • 负载均衡监听的是HTTP 80端口,但目标组转发的端口如果和Laravel应用运行的端口不匹配,就会出现连接拒绝。
  • 默认情况下,Laravel用artisan serve启动时端口是8000,但Elastic Beanstalk默认的Nginx/Apache配置可能期望应用运行在80端口。你需要:
    • 确认目标组的转发端口:进入EC2目标组页面,查看目标标签下的端口是否与应用实际运行端口一致。
    • 若使用Nginx反向代理,在项目根目录创建.platform/nginx/conf.d/laravel.conf文件,添加以下配置(假设应用运行在8000):
      location / {
          try_files $uri $uri/ /index.php?$query_string;
          proxy_pass http://127.0.0.1:8000;
          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;
      }
      

3. 检查应用部署与运行日志

  • 登录EC2实例,查看Laravel应用日志:
    tail -f /var/app/current/storage/logs/laravel.log
    
    检查是否有依赖缺失、数据库连接失败、环境变量配置错误等问题。
  • 查看Nginx错误日志(若用Nginx):
    tail -f /var/log/nginx/error.log
    
  • 查看Elastic Beanstalk部署日志,确认composer install、npm run build等步骤是否执行成功,有没有权限错误或依赖安装失败。

4. 验证安全组配置

  • 负载均衡器的安全组需允许外部访问80/443端口(来源设为0.0.0.0/0)。
  • EC2实例的安全组需允许负载均衡器的安全组访问应用运行的端口(比如8000或80),不能只开放给0.0.0.0/0(虽然测试可以,但生产建议限制来源)。

5. 确认Laravel应用启动方式

生产环境不建议用php artisan serve启动,最好配置Nginx+PHP-FPM:

  • 确保Elastic Beanstalk的PHP环境已正确配置,项目根目录的public文件夹是Web根目录。
  • 检查.env文件中的APP_URL是否设置为负载均衡的域名或公网IP,APP_ENV设为production。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:10:42