nginx+nginx-unit+django “413 Request Entity Too Large”

版权声明:本文为博主原创文章,未经博主允许不得转载。 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版本

结论

不要轻易尝试放纵的滋味。支撑服务器的还是用  应用时间较长的软件。

猜你喜欢

转载自blog.csdn.net/u010377372/article/details/82415350