已设置client_max_body_size,Nginx仍返回413错误求助
解决Nginx反向代理NodeJS时POST请求实体过大的问题
从你提供的错误信息来看,limit: 102400(即100KB)是关键——这个限制并非来自Nginx(你已经在Nginx的http、server、location层级都设置了client_max_body_size 1000M),而是NodeJS应用自身的请求体大小限制。
解决步骤:
根据你使用的NodeJS框架,调整对应的请求体解析配置:
1. Express框架
Express默认的请求体解析限制是100KB,需要修改express.json()或body-parser的配置:
const express = require('express'); const app = express(); // 处理JSON格式请求,设置最大大小为1000MB app.use(express.json({ limit: '1000mb' })); // 处理URL编码格式请求,设置最大大小为1000MB app.use(express.urlencoded({ extended: true, limit: '1000mb' }));
如果单独使用body-parser中间件:
const bodyParser = require('body-parser'); app.use(bodyParser.json({ limit: '1000mb' })); app.use(bodyParser.urlencoded({ extended: true, limit: '1000mb' }));
2. Koa框架
如果使用koa-body或koa-bodyparser,调整如下:
const Koa = require('koa'); const koaBody = require('koa-body'); const app = new Koa(); app.use(koaBody({ multipart: true, // 支持文件上传 jsonLimit: '1000mb', // JSON请求体大小限制 formLimit: '1000mb', // 表单请求体大小限制 formidable: { maxFileSize: 1000 * 1024 * 1024 // 文件上传大小限制(1000MB) } }));
3. 其他框架/自定义服务器
如果是自定义HTTP服务器或其他框架,检查请求体解析相关的配置项,找到类似limit、maxBodySize的参数并调整为合适的值。
验证
修改完成后,重启你的NodeJS应用,再发送大POST请求测试即可。
内容的提问来源于stack exchange,提问作者blizz
相关产品推荐
相关产品推荐

