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

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

我查看了所有可能的 stackoverflow 帖子并尝试了所有不同的方法。没有一个工作。似乎也没有关于此的官方文档。在我的本地应用程序中一切正常,我可以上传任何大小的图像,但是一旦它部署在我的 Elastic Beanstalk 中,我似乎每个图像上传的限制为 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;
如果这个解决起来很复杂,有没有其他办法增加1M的限制?

最佳答案

您的 proxy.conf 的可能原因没有被使用是因为您使用的是当前版本的 EB,它在 上运行亚马逊 Linux 2 (AL2)。但是,您尝试使用的代理设置适用于在 AL1 上运行的旧版 EB。
对于 AL2,nginx 设置应该放在 .platform文件夹,不在 .ebextenationsdocs 所示.
因此,您可以尝试以下操作:
文件 .platform/nginx/conf.d/myconfig.conf与内容

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

关于node.js - 413 请求实体太大 - Elastic Beanstalk + 负载均衡器 + Node.js 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63140430/

相关文章:

node.js - 使用 BusterJS、ExpressJS 和 SuperTest 的问题

javascript - 安装和实现 react native 设备信息时出错

ssl - Nginx 转发到其他 URL 时启用 HTTPS/SSL

ruby-on-rails - Nginx ssl_protocol 设置不起作用

ssl - nginx + SslRequirement + mongrel cluster = 无限重定向循环

node.js - HTTP2 与 node.js 在 nginx 代理后面

node.js - 创建或更新 dynamodb

node.js - 如何成功锁定 monorepo 中的 Node 模块依赖项?

mysql - "Can' t 连接到 MySQL 服务器”,仅当客户端是远程服务器时

amazon-web-services - 在 CloudFormation 中创建具有未知 ImageUri 属性的 Lambda