Symfony 3部署至AWS Elastic Beanstalk遇连接超时问题求助
Symfony 3 部署 Elastic Beanstalk 问题排查与修复
核心问题拆解
从你给出的测试结果和错误来看,主要卡这几个点:
- HTTP强制跳HTTPS,但实例没开HTTPS服务:访问
http://127.0.0.1会跳转到https://127.0.0.1/web/,但EC2本地443端口根本没监听,自然连不上。 - 依赖完全缺失:你上传的包不含
vendor和node_modules,EB不会自动帮你装Composer和Yarn依赖,项目核心代码跑不起来。 - Web根目录与Apache权限没配到位:Symfony 3的入口在
/web,得确保Apache的根目录指向这里,同时权限规则要放开。
具体修复步骤
1. 自动安装依赖
在项目根目录加.ebextensions/composer.config,让EB自动装PHP依赖:
container_commands: 01-install-composer: command: "composer install --no-dev --optimize-autoloader" cwd: "/var/app/current"
调整你现有的Yarn配置文件,确保前端依赖安装+静态资源构建(如果需要的话):
container_commands: 01-install-yarn-deps: command: "yarn install && yarn run build" cwd: "/var/app/current"
要是项目不需要前端构建,只留
yarn install就行,但必须保证依赖能装全。
2. 配置Apache根目录与跳转规则
创建.ebextensions/apache.config,把Web根目录指向Symfony的/web,同时暂时关掉HTTPS强制跳转(等后续配好SSL再开):
files: "/etc/httpd/conf.d/symfony.conf": mode: "000644" owner: root group: root content: | <VirtualHost *:80> DocumentRoot /var/app/current/web <Directory /var/app/current/web> AllowOverride All Require all granted </Directory> # 没配置SSL证书前,先注释下面的跳转规则 # RewriteEngine On # RewriteCond %{HTTP:X-Forwarded-Proto} !https # RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </VirtualHost>
你之前的HTTPS跳转大概率是Symfony内部配置(比如
config.yml里的trusted_proxies或路由强制HTTPS),先关掉避免冲突。
3. 检查安全组端口
进AWS控制台,找到EB环境对应的EC2安全组:
- 确保入站规则开放
HTTP(80)端口(要是后续要配HTTPS,再开443)。 - 你遇到的
ERR_CONNECTION_TIMED_OUT大概率是安全组没放开80端口的外部访问。
4. 配置生产环境参数
在项目根目录加.env.prod,填好生产环境的数据库、缓存等配置,同时在Composer配置里加缓存预热命令:
container_commands: 02-warmup-cache: command: "php bin/console cache:warmup --env=prod" cwd: "/var/app/current"
验证操作
- 重新打包项目(带上所有
.ebextensions配置文件,不用手动加vendor和node_modules),上传到EB。 - 部署完连EC2实例,执行
curl http://127.0.0.1,应该返回Symfony正常页面内容,而不是跳HTTPS。 - 访问EB的公网URL,确认页面能正常加载。
内容的提问来源于stack exchange,提问作者MarioZ
相关产品推荐
相关产品推荐

