部署Laravel应用至AWS Elastic Beanstalk时出现403 Forbidden错误
解决Laravel部署到AWS Elastic Beanstalk的403 Forbidden错误
从你的nginx错误日志可以看出,nginx尝试访问/var/www/html/的目录索引被禁止,核心原因是Laravel的入口文件index.php位于public子目录下,但当前nginx配置的web根目录没有指向public,也未正确指定默认索引文件。以下是具体解决步骤:
方法一:通过.ebextensions持久化修改nginx配置(推荐)
这种方式会在Elastic Beanstalk实例创建时自动应用配置,避免实例重启后丢失:
- 在你的Laravel项目根目录创建
.ebextensions/nginx/conf.d目录结构 - 在该目录下新建
laravel.conf文件,写入以下内容:
root /var/www/html/public; index index.php index.html index.htm;
- 将
.ebextensions目录和项目代码一起打包部署到Elastic Beanstalk
方法二:手动调整实例的nginx配置(临时生效,重启后需重新设置)
如果需要临时验证,可以登录到Elastic Beanstalk实例修改配置:
- 通过AWS控制台或SSH登录到你的EC2实例
- 编辑nginx的代理配置文件(Amazon Linux 2环境通常是
/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf) - 将
root指令的值改为/var/www/html/public,并确保index包含index.php - 重启nginx服务:
sudo systemctl restart nginx
方法三:检查并修复文件权限
确保nginx进程有权限读取Laravel的public目录及文件:
- 执行以下命令调整权限:
sudo chmod -R 755 /var/www/html/public sudo chown -R nginx:nginx /var/www/html/public
(注:如果是Amazon Linux 1环境,用户组可能是apache,请根据实际环境调整)
完成以上操作后,重新访问你的应用URL,403错误应该会解决。
内容的提问来源于stack exchange,提问作者Rupam Kundu
相关产品推荐
相关产品推荐

