2024-12-07
兴趣是最好的老师,其次是耻辱。——胖子邓
1 |
|
就是这几个配置
1. spring.servlet.multipart.max-file-size
-
作用:设置单个文件的最大上传大小。
-
默认值:1MB
-
范围:适用于
multipart/form-data
请求中,每个文件的大小限制。 -
示例:
1
spring.servlet.multipart.max-file-size=1GB
允许上传的单个文件最大为 1GB。
2. spring.servlet.multipart.max-request-size
-
作用:设置整个请求的最大大小,包括所有文件和表单字段的总和。
-
默认值:10MB
-
范围:适用于
multipart/form-data
请求的整体大小。 -
示例:
1
spring.servlet.multipart.max-request-size=1GB
如果总上传的文件大小和表单数据超过 1GB,会抛出
MaxUploadSizeExceededException
。
3. server.tomcat.max-http-form-post-size
-
作用:限制 HTTP 表单提交(
application/x-www-form-urlencoded
)的最大 POST 请求大小。 -
默认值:2MB
-
范围:仅适用于传统表单 POST 请求,不包括文件上传。
-
示例:
1
server.tomcat.max-http-form-post-size=1GB
允许表单 POST 数据最大为 1GB。
4. server.tomcat.max-http-post-size
-
作用:限制 HTTP POST 请求的最大数据大小。
-
默认值:2MB
-
范围:适用于所有 POST 请求的数据限制,包括
application/json
和multipart/form-data
。 -
区别:这是 Tomcat 提供的全局限制,与 Spring Boot 的
max-file-size
和max-request-size
配置配合使用。 -
示例:
1
server.tomcat.max-http-post-size=1GB
允许所有 POST 数据(包括文件和非文件)最大为 1GB。
5. server.tomcat.max-http-response-header-size
-
作用:限制 HTTP 响应头的最大大小。
-
默认值:8KB
-
范围:适用于 HTTP 响应中所有头字段的总大小。
-
场景:
- 如果服务器需要返回很大的
Set-Cookie
或自定义头信息,需要增加此值。
- 如果服务器需要返回很大的
-
示例:
1
server.tomcat.max-http-response-header-size=1GB
允许 HTTP 响应头的总大小最大为 1GB。
6. server.tomcat.max-swallow-size
-
作用:限制在请求或响应出错时,Tomcat 能够吞下的剩余数据大小。
-
默认值:2MB
-
范围:
- 如果请求的数据大小超过了
max-post-size
或max-http-form-post-size
,Tomcat 默认会吞掉超过部分的数据。 max-swallow-size
限制了这些被丢弃的数据大小。- 设置为
-1
,表示无限制。
- 如果请求的数据大小超过了
-
示例:
1
server.tomcat.max-swallow-size=1GB
如果请求被拒绝(例如文件过大),最多仍然允许吞掉 1GB 的数据。
如何选择配置
-
文件上传场景:
- 配置
spring.servlet.multipart.max-file-size
和spring.servlet.multipart.max-request-size
,这是 Spring Boot 针对multipart
请求的专用配置。 - 如果 Tomcat 的全局限制更小,还需要调整
server.tomcat.max-http-post-size
。
- 配置
-
表单提交场景:
- 配置
server.tomcat.max-http-form-post-size
以适应大表单数据提交。 - 如果数据中包含文件,还需要同时调整
max-http-post-size
。
- 配置
-
响应头限制:
- 如果你的应用需要返回较大的头信息(例如
Set-Cookie
或长 token),需要调整server.tomcat.max-http-response-header-size
。
- 如果你的应用需要返回较大的头信息(例如
-
吞吐大数据场景:
- 如果请求数据较大且频繁出错,需要调整
server.tomcat.max-swallow-size
,防止吞掉数据过多。
- 如果请求数据较大且频繁出错,需要调整
最佳实践
- 不要设置极大的值(如
1GB
),因为这可能会导致内存溢出或性能问题。 - 调整配置时,尽量依据实际需求并确保客户端(如浏览器、前端应用)支持相应的大小限制。
- 配置 Tomcat 和 Spring Boot 限制时,注意它们之间的相互关系,避免设置冲突。