【问题标题】:Configuring nginx client_max_body_size on Elastic Beanstalk Node在 Elastic Beanstalk 节点上配置 nginx client_max_body_size
【发布时间】:2020-11-05 12:31:15
【问题描述】:

我有一个在 Elastic Beanstalk 上运行的 Node 10 应用程序,当请求负载大于 ~1MB 时,它会引发 413 错误。

<html>

<head>
    <title>413 Request Entity Too Large</title>
</head>

<body>
    <center>
        <h1>413 Request Entity Too Large</h1>
    </center>
    <hr>
    <center>nginx/1.16.1</center>
</body>

</html>

请求根本没有命中我的应用程序;它被 nginx 拒绝了。

我已尝试配置 AWS 以根据 this answer 增加允许的请求正文的大小,但无济于事。

我尝试在.ebextensions/01_files.config 添加一个文件,内容如下:

files:
  "/etc/nginx/conf.d/proxy.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      client_max_body_size 20M;

那没有用,所以我尝试将文件直接添加到 .ebextensions/nginx/conf.d/proxy.conf,只使用:

client_max_body_size 20M;

这也不起作用。然后我通过 SSH 进入实例并直接添加文件。重新部署后,整个conf.d 目录被删除并重写,没有这个文件。

如何让 AWS Elastic Beanstalk 和 Node.js 10 在 64 位 Amazon Linux 2/5.1.0 上运行以接受 nginx 配置?

【问题讨论】:

    标签: node.js amazon-web-services nginx amazon-ec2 amazon-elastic-beanstalk


    【解决方案1】:

    您尝试使用的 nginx 设置 (/etc/nginx/conf.d/proxy.conf) 适用于 Amazon Linux 1

    由于您使用的是 Amazon Linux 2,因此您应该使用不同的文件来设置 nginx。对于 AL2,nginx 设置应该在.platform/nginx/conf.d/ 中,而不是在.ebextentions 中,如docs 所示。

    因此,您可以拥有以下 .platform/nginx/conf.d/myconfig.conf 的内容:

    client_max_body_size 20M;
    

    以上只是配置文件的示例。我无法验证该设置是否真的有效,但您肯定使用了错误的文件夹来设置 nginx 选项。

    我的建议是尝试通过 ssh 手动使其工作,就像您现在尝试的那样。如果您提供自己的.platform/nginx/nginx.conf 文件不起作用,您可能会发现您需要覆盖整个 nginx 设置。

    【讨论】:

    • 强制移至 AL2,默认 client_max_body_size 已更改,.ebextensions 无法像文档中那样工作。血腥的 AWS。谢谢!
    【解决方案2】:

    在文件夹中添加client_max_body_size 20M; .platform/nginx/conf.d/proxy.conf 为我修复了它。请务必检查您是否使用 Amazon Linux 2

    【讨论】:

      猜你喜欢
      • 2013-09-25
      • 2020-08-12
      • 2021-03-16
      • 2015-02-23
      • 2020-08-27
      • 2015-01-30
      • 2015-11-27
      • 2014-11-22
      • 2019-09-24
      相关资源
      最近更新 更多