前言

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全局)

1
2
3
4
http {
# 将nginx代理的所有请求实体的大小限制为50m
client_max_body_size 50m;
}

以上配置可以控制全局nginx所有请求报文大小

b) 在server节点下(server全局)

1
2
3
4
server {
# 将该服务下的所有请求实体的大小限制为50m
client_max_body_size 50m;
}

以上配置可以控制该server的所有请求报文大小

c) 在location节点下(单应用)

1
2
3
4
location /test {
# 将此路由请求的实体大小限制为1024m
client_max_body_size 1024m;
}

以上配置可以控制满足该路由规则的请求报文大小

重启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 路由规则的请求生效。