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

Node.js API部署AWS Elastic Beanstalk上传文件到S3出现Request Entity Too Large错误

问题根因
  • 你当前配置的express.json()和express.urlencoded()仅能处理application/json、application/x-www-form-urlencoded类型的请求,完全不覆盖multipart/form-data格式的文件上传请求,所以你设置的50MB限制对文件上传场景无效。
  • AWS Elastic Beanstalk 默认搭载的Nginx反向代理有全局请求体大小限制,默认值通常为1~2MB,即使Node服务层面放开了限制,代理层也会先拦截超量请求抛出Request entity too large错误。
  • 你现有的S3上传逻辑没有问题,和当前报错无关,无需修改。
解决方案

1. 配置multipart请求解析中间件

选择multer作为文件上传解析中间件,按需配置请求大小阈值:
首先安装依赖:npm install multer
然后在app.js中添加如下配置:

const multer = require('multer');

// 按需调整阈值,示例为单文件最大10MB,总请求体最大50MB
const upload = multer({
  limits: {
    fileSize: 10 * 1024 * 1024,
    fieldSize: 50 * 1024 * 1024,
    parts: 100
  },
  // 临时文件存放到EB实例的/tmp目录即可
  storage: multer.diskStorage({
    destination: (req, file, cb) => cb(null, '/tmp'),
    filename: (req, file, cb) => cb(null, `${Date.now()}-${file.originalname}`)
  })
})

// 你的上传接口使用multer中间件,示例为接收字段名为images的最多10个文件
app.post('/你的上传接口路径', upload.array('images', 10), async (req, res) => {
  // req.files为解析后的文件列表,遍历调用你已有的uploadFile方法上传到S3即可
})

2. 修改Elastic Beanstalk代理层限制

根据你使用的EB运行环境版本选择对应配置方式:

  • 如果你使用Amazon Linux 2/2023版本的EB环境:在项目根目录创建.platform/nginx/conf.d/proxy.conf文件,写入以下内容:
client_max_body_size 50M;
  • 如果你使用老版本Amazon Linux 1的EB环境:在项目根目录创建.ebextensions/nginx.config文件,写入以下内容:
files:
  "/etc/nginx/conf.d/proxy.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      client_max_body_size 50M;

配置完成后重新部署EB环境即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:15:01