我在 AWS Elastic Beanstalk 实例上遇到了问题,似乎无法上传 6MB 大小的 PDF 文件。首先,让我提供一些背景信息:
- 正在运行的应用程序是 Expression Engine (EE) 应用程序
- upload_max_filesize 设置为 16M
- post_max_size 设置为 32M
- max_execution_time 设置为 300
- 文件正在通过 Elastic Beanstalk 上的 EE 应用程序上传到 Amazon S3 存储桶。
我可以成功上传 1-2MB 左右的 PDF 文件,但是当我尝试上传 6MB 文件时,上传比例达到 100%,然后将我重定向回 EE 主屏幕,但文件尚未上传。
鉴于上述配置变量的设置,是否有人知道或知道为什么我无法上传 6MB 的文件?
答案1
如果您使用的是 NGINX 或其他代理服务器,则可能与其client_max_body_size
指令有关。要修复它,请.ebextensions
在应用程序根目录中创建文件夹和一个文件.ebextensions/01_nginx.config
。然后告诉构建脚本在构建环境时添加此指令,将其添加到您创建的文件中.ebextensions/01_nginx.config
:
container_commands:
01_reload_nginx:
command: "service nginx reload"
files:
"/etc/nginx/conf.d/proxy.conf":
mode: "000755"
owner: root
group: root
content: |
client_max_body_size 25M;
将您的文件夹提交到 git,如果您正在使用它。然后eb deploy
,祈祷并尝试上传您的 6MB PDF。
但是,根据我的经验,有时您必须完全重建整个环境才能使其正常工作。
答案2
如果有人仍然在为此苦苦挣扎,请查看这篇文章的第一个答案。
就我而言,构建步骤仅将.build
文件夹复制到 ElasticBeanstalk,因此我必须将该步骤添加- cp -R .platform ./build/.platform
到我buildspec.yml
的构建步骤中,以便 .platform 文件夹也被复制。