413 请求实体太大 - Elastic Beanstalk + 负载均衡器 + Node.js 应用程序

Rar*_*ifa 8 nginx amazon-web-services node.js amazon-elb amazon-elastic-beanstalk

我查看了所有可能的 stackoverflow 帖子,并尝试了所有不同的方法。没有一个起作用。似乎也没有这方面的官方文档。在我的本地应用程序中一切正常,我可以上传任何大小的图像,但是一旦将其部署到我的弹性豆茎中,我似乎每个图像上传的限制为 1M。

问题:每次用户发布大于 1MB 的图像时,我都会收到 nginx 的 413 错误消息。

Elastic Beanstalk 日志:2020/07/28 17:22:53 [错误] 10404#0: *62 客户端打算发送太大的正文:2800500 字节,客户端:172.31.18.162,服务器:,请求:“POST /comment/ image_post/11003031 HTTP/1.1”,主机:“myapp.com”,引荐来源:“https://myapp.com/11003031”

我为尝试解决问题所做的事情:

我在 Node.js 应用程序根文件夹中创建了一个 .ebextensions 文件夹,添加了以下代码并将其命名为 proxi.config,并将其推送到我的 github,该 github 通过管道部署到 Elastic Beanstalk。我可以在我的存储库中看到 proxi.config,但由于某种原因它会被负载均衡器自动覆盖(我从我所读到的内容中猜测)。

    proxi.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;
Run Code Online (Sandbox Code Playgroud)

如果这个解决起来很复杂,有没有其他方法可以提高1M限制?

Mar*_*cin 10

proxy.conf您未使用的可能原因是您使用的是当前版本的 EB,该版本在Amazon Linux 2 (AL2) 上运行。但是,您尝试使用的代理设置适用于在 AL1 上运行的旧版本 EB。

对于 AL2,nginx 设置应放置在.platform文件夹中,而不是文档.ebextenations中所示的位置。

因此您可以尝试以下操作:

文件.platform/nginx/conf.d/myconfig.conf内容为

client_max_body_size 25M;
Run Code Online (Sandbox Code Playgroud)

请注意,我无法验证 nginx 自行设置。它仍然可能无法工作,因为它可能是错误的设置或格式错误。但在 AL2 EB 环境中使用.ebextenations代替.platform绝对是一个问题。