前言 {#前言}
Nginx出现的413 Request Entity Too Large错误,这个错误一般在请求包体的时候出现,大小超出了 Nginx 允许的最大值,如果没有配置的话,默认是1M。
进行前端接口请求时,报错413错误,在报错信息上可以看出是Nginx报的错,因为是经过了Nginx的转发请求,所以很可能是Nginx做了限制,只需要将
client_max_body_size
的参数调大即可。
解决方法 {#解决方法}
修改Nginx的配置文件(一般在/usr/local/nginx/conf/nginx.conf这个位置)的"client_max_body_size
"属性来解决,在 http{}
段中增大nginx上传文件大小限制
该属性有三个地方可以配置,不通的地方的作用域不同。
a) 在http节点下(http全局) {#a-在http节点下(http全局)}
|-----------------|-----------------------------------------------------------------------|
| 1 2 3 4
| http { # 将nginx代理的所有请求实体的大小限制为50m client_max_body_size 50m; }
|
以上配置可以控制全局nginx所有请求报文大小
b) 在server节点下(server全局) {#b-在server节点下(server全局)}
|-----------------|----------------------------------------------------------------------|
| 1 2 3 4
| server { # 将该服务下的所有请求实体的大小限制为50m client_max_body_size 50m; }
|
以上配置可以控制该server的所有请求报文大小
c) 在location节点下(单应用) {#c-在location节点下(单应用)}
|-----------------|------------------------------------------------------------------------------|
| 1 2 3 4
| location /test { # 将此路由请求的实体大小限制为1024m client_max_body_size 1024m; }
|
以上配置可以控制满足该路由规则的请求报文大小
重启nginx {#重启nginx}
修改完配置文件后,重启nginx即可。
扩展资料 {#扩展资料}
-
限制请求体的大小,默认1m,若超过所设定的大小,返回413错误。
client_max_body_size 50m;
-
读取请求头的超时时间,若超过所设定的大小,返回408错误。
client_header_timeout 1m;
-
读取请求实体的超时时间,若超过所设定的大小,返回413错误。
client_body_timeout 1m;
-
http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒
proxy_connect_timeout 60s;
-
http请求被容器(tomcat, netty等)处理后,nginx会等待处理结果,也就是容器返回的response。此参数即为服务器响应时间,默认60秒
proxy_read_timeout 1m;
-
http请求被服务器处理完后,把数据传返回给Nginx的用时,默认60秒
proxy_send_timeout 1m;
备注:
- (1)可以在http{ }中设置:client_max_body_size 20m;
- (2)也可以在server{ }中设置:client_max_body_size 20m;
- (3)还可以在location{ }中设置:client_max_body_size 20m;
http{} 中控制着所有nginx收到的请求。
如果配置在server{}中,则控制该server收到的请求报文大小。
如果配置在location中,则报文大小限制,只对匹配了location 路由规则的请求生效。