413 Request Entity Too Large

本文介绍了如何解决Nginx文件上传过大引发的限制问题,重点讲解了`client_max_body_size`参数调整,以及与之相关的超时配置,包括`client_header_timeout`、`client_body_timeout`等,并提到了不同配置区域(http, server, location)的选择和优先级。
摘要由CSDN通过智能技术生成

问题在于文件太大了,nginx对上传文件大小有限制,默认为1m。

解决办法

  • 先了解以下几个参数的作用:
client_max_body_size
限制请求体的大小,若超过所设定的大小,返回413错误。

client_header_timeout
读取请求头的超时时间,若超过所设定的大小,返回408错误。

client_body_timeout
读取请求实体的超时时间,若超过所设定的大小,返回413错误。

proxy_connect_timeout
http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒。

proxy_read_timeout
http请求被容器(tomcat, netty等)处理后,nginx会等待处理结果,也就是容器返回的response。此参数即为服务器响应时间,默认60秒。

proxy_send_timeout
http请求被服务器处理完后,把数据传返回给Nginx的用时,默认60秒。

所以此时我们只需要增加client_max_body_size参数,修改成符合我们项目所需的大小即可,不过加的地方也是有讲究的,可以加在http{ },server{ },location{ }这三个地方,因此产生的效果范围也不同,如下:

http{}:所有nginx收到的请求
server{}:该server收到的请求
location{}:匹配了location路由规则的请求

同时它们的优先级也不同,会产生覆盖关系,越小范围的优先级越高,比如在location{}中的配置,就可以覆盖掉http{}中的配置,所以按需配置即可,我一般用的是location{},毕竟上传请求如果不是用的直传,那么还是得反向代理到后端具体接口的,因此配置在location{}块中就好了。

  • 记得加上超时时间配置

一旦调大了文件大小上限,那么大文件上传的时间肯定会需要更久,毕竟我们并没有直接去提升服务器带宽,所以上传时很可能会出现超时的错误,我们首先要做的就是划定业务上传文件的极限大小,不可能无限大的,其次就是在该限制下,上传文件测试,看看在不增加带宽的情况下,会不会出现超时情况,如果有,那么就配合以上提供的参数,调整nginx配置文件吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值