版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010377372/article/details/82415350
前言
“413 Request Entity Too Large”代表请求包太大,服务器拒绝响应
问题
由于设计的系统需要上传文件,由于nginx默认允许最大请求是1m,所以当超过1m时,文件就无法上传了
解决步骤
简版:
一、在nginx中增加 配置
client_max_body_size 10m;
二、升级nginx-unit版本,1.3之前,支持的最大的请求体是2m。
复杂版:
1.在nginx配置中添加如下配置
client_max_body_size 1m;
这个配置可以放到 http段 或者 server段 或者 location段。
加上之后 依然报错。但是报错内容是不同的:
nginx client_max_body_size未设置时:
nginx.1 | 2018/09/04 07:45:23 [error] 36#36: *1 client intended to send too large body: 7499456 bytes, client: 218.205.207.62, server: kws.knd.com.cn, request: "POST /api/v1/file/ HTTP/2.0", host: "kws.knd.com.cn", referrer: "https://kws.knd.com.cn/ui/"
nginx.1 | kws.knd.com.cn 218.205.207.62 - - [04/Sep/2018:07:45:23 +0000] "POST /api/v1/file/ HTTP/2.0" 413 200 "https://kws.knd.com.cn/ui/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
nginx client_max_body_size设置之后:
nginx.1 | 2018/09/04 07:49:15 [warn] 44#44: *1 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000003, client: 218.205.207.62, server: kws.knd.com.cn, request: "POST /api/v1/file/ HTTP/2.0", host: "kws.knd.com.cn", referrer: "https://kws.knd.com.cn/ui/"
nginx.1 | kws.knd.com.cn 218.205.207.62 - - [04/Sep/2018:07:49:17 +0000] "POST /api/v1/file/ HTTP/2.0" 413 66 "https://kws.knd.com.cn/ui/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
看现象应该是nginx已经接收了文件,但是之后又返回了413,说明应该是在之后的处理中,nginx-unit又返回了413,查看nginx-unit文档,发现是支持配置的请求体大小的啊。修改请求体大小配置,直接报错,没有该配置 。
偶然发现配置请求体大小是unit 1.3版本才开始支持的。在github issue中找关于max_body_size设置的问题,发现确实是一开始不支持 设置 请求体大小,默认配置是2m。https://github.com/nginx/unit/issues/135
无奈,而我安装的版本是1.1,所以解决办法是升级 unit到1.3版本
结论
不要轻易尝试放纵的滋味。支撑服务器的还是用 应用时间较长的软件。