【问题标题】:413 Request Entity Too Large - Elastic Beanstalk + Load Balancer + Node.js application413 请求实体太大 - Elastic Beanstalk + 负载均衡器 + Node.js 应用程序
【发布时间】:2020-11-18 06:23:21
【问题描述】:

我查看了所有可能的 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”

我做了什么来尝试解决这个问题:

我在我的节点、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;

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

【问题讨论】:

    标签: node.js amazon-web-services nginx amazon-elastic-beanstalk aws-load-balancer


    【解决方案1】:

    您的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 设置。它仍然可能无法正常工作,因为它可能设置错误或格式错误。但是在 AL2 EB 环境中使用 .ebextenations 而不是 .platform 绝对是一个问题。

    【讨论】:

    • 我们可以用 .platform/nginx 替换 .ebextenations 吗???
    猜你喜欢
    • 2020-10-21
    • 2015-02-21
    • 2016-02-05
    • 2017-04-19
    • 1970-01-01
    • 2019-04-21
    • 2019-09-02
    • 2017-02-14
    • 2019-04-24
    相关资源
    最近更新 更多