【问题标题】:HTTP 413 Request Entity Too Large in Node JS Project in GAEGAE 中 Node JS 项目中的 HTTP 413 请求实体太大
【发布时间】:2018-10-10 14:35:19
【问题描述】:

我在 GAE 上部署了我的后端应用程序。在其中,我有一个 API,可以将文件上传到 GCS 存储桶。 最近尝试上传50mb以上的文件,得到413 Request entity too large

做了一些研究,发现问题出在ngnix。对于任何大于 32Mb 的文件,API 将为 413 提供。

找到了一个解决方案,其中提到包含ngnix.conf 文件并在其中添加client_max_body_size 80M。 我这样做了,但仍然遇到同样的错误。

这是我的ngnix-app.conf 文件

server{
 location / {
        client_max_body_size       80m;
        client_body_buffer_size    512k;
  }
}

我在这里遗漏了什么明显的东西?

【问题讨论】:

  • 你可以尝试在你的bodyParser app.use(bodyParser.urlencoded({ "limit": "50mb", extended: true, parameterLimit: 1000000 }));这对我有用。
  • 您也可以在客户端压缩文件并在服务器上解压缩。
  • @ChrisAdams 实际上整个事情只发生在后端。我有一个计划,每天晚上备份我的数据库,然后自己调用 API 将备份的 SQL 文件上传到 GCS 存储桶中
  • 啊,是的,在Q中错过了,
  • 请检查第二次编辑here。您必须在 Node 中修改最大大小,如下所示:app.use(bodyParser.json({limit: '50mb'}));app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));

标签: node.js json nginx google-app-engine body-parser


【解决方案1】:

您可以在 Node.Js 应用程序中使用

更改请求缓冲区大小
app.use(bodyParser.json({limit: '50mb'})); 
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));

你也可以在nginx配置中增加你的请求

server{
 location / {
        client_max_body_size       xxm;
        client_body_buffer_size    xxm;
  }
}

【讨论】:

  • 这实际上是任何在 GAE 中使用 NodeJs 应用程序遇到此类错误的人的答案。我有一个带有几千字节的 JSON 有效负载的 HTTP 413,这很令人困惑,并且在官方文档中的任何地方都没有提到。确保在您的项目/应用程序中包含“body-parser”,因为默认情况下您不需要它,它是由 GAE 环境自动提供的。
【解决方案2】:
  1. 只需修改 NGINX 配置文件

    sudo nano /etc/nginx/nginx.conf
    
  2. 搜索此变量:client_max_body_size。如果你找到它,那么只需将值增加到 100M。如果找不到,只需添加 HTTP 中的这一行。

    client_max_body_size 100M;
    
  3. 要应用更改,只需重新启动 ngnix

    sudo service nginx restart
    

查看截图以更好地理解

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2014-12-23
    • 2015-01-27
    • 2021-03-05
    • 2015-10-04
    相关资源
    最近更新 更多