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

413 Request Entity Too Large - Elastic Beanstalk + Load Balancer + Node.js application

我查看了所有可能的 Whosebug 帖子并尝试了所有不同的方法。 None 成功了。似乎也没有关于此的官方文件。在我的本地应用程序中一切正常,我可以上传任何大小的图像,但是一旦它部署在我的弹性 beanstalk 中,我似乎每个图像 upoad 的限制为 1M。

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

弹性豆茎日志: 2020/07/28 17:22:53 [错误] 10404#0:*62 客户端打算发送太大的正文:2800500 字节,客户端:172.31.18.162,服务器:,请求:“POST /comment/image_post/11003031 HTTP/1.1", host: "myapp.com", referrer: "https://myapp.com/11003031"

我为解决问题所做的工作:

我在我的节点、js 应用程序根文件夹中创建了一个 .ebextensions 文件夹,添加了以下代码并将其命名为 proxi.config,并将其推送到我的 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;

如果这个比较麻烦,请问有没有办法提高1M的限制?

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

对于 AL2,nginx 设置应该放在 .platform 文件夹中,而不是 .ebextenations 中,如 docs.

中所示

因此您可以尝试以下方法:

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

client_max_body_size 25M;

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