前言
我们在上传大文件的时候通常会把请求体大小限制设置的很大,但平常没有这种业务需求的时候一般就会做出限制,避免异常请求的进入,我们该怎么去设置这个限制呢?
一般来说,Linux服务器没有直接限制请求参数包大小的限制。但是,通常会设置一些配置来限制请求大小,这些配置通常在Web服务器或应用服务器上进行设置,比如Nginx和Tomcat
如何限制请求体大小
1.Nginx
1.1 Nginx 1.12及以下版本
在1.12及以前版本的Nginx中,请求体限制是由ngx_http_core_module模块内的client_max_body_size属性控制的
该指令的默认值为0,表示没有限制,如果要做限制需要在Nginx配置文件中添加如下代码:
http {
client_max_body_size 10m;
}
1.2 Nginx 1.13及以上版本
在Nginx 1.13及以后的版本中,请求体大小限制是由ngx_http_core_module模块内的client_body_buffer_size和client_max_body_size属性控制的
要设置请求体大小限制,需要在Nginx配置文件中添加如下代码:
http {
client_body_buffer_size 16k;
client_max_body_size 10m;
}
其中 client_body_buffer_size 表示将请求体缓存到内存中的大小为16KB
而 client_max_body_size 表示请求体的最大限制为10MB
ps:在Nginx 1.13及以后版本中,如果请求体的大小超过了client_body_buffer_size指定的值,Nginx会将请求体缓存到磁盘中,因此还需要确保磁盘空间足够大以存储请求体缓存
2.Tomcat
2.1Tomcat 8.0及以下版本
<Connector port="8080" maxHttpHeaderSize="8192"
maxPostSize="20971520" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
maxPostSize表示最大请求体大小,单位为字节,默认为2097152字节(2MB)
maxHttpHeaderSize表示HTTP请求头大小,单位为字节,默认为8192字节(8KB)
2.2 Tomcat 8.5及以上版本
<Connector port="8080" maxHttpHeaderSize="8192"
maxSwallowSize="20971520" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
在Tomcat 8.5及以上版本中,maxPostSize参数已被废弃,由maxSwallowSize代替
maxSwallowSize表示最大请求体大小,单位为字节,默认为2097152字节(2MB)
ps:maxSwallowSize包括HTTP请求头和请求体的大小,所以如果需要更改请求体大小限制,需要将maxHttpHeaderSize参数设置为较小的值(如2048),以便增大maxSwallowSize
总结
无论采用哪种Web服务器,能够对请求体进行限制,可以防止一些可能的非法或不正常请求
如果请求体大小超出了限制,Web服务器会返回“HTTP Status 413 – Request Entity Too Large”
保护服务器免受请求体的过度负荷和潜在攻击,确保系统的稳定性和安全性
原文地址:https://blog.csdn.net/weixin_42559574/article/details/130002690
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_24138.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!