兴趣是最好的老师,其次是耻辱。——胖子邓

1
2
3
4
5
6
spring.servlet.multipart.max-file-size=1GB
spring.servlet.multipart.max-request-size=1GB
server.tomcat.max-http-form-post-size=1GB
server.tomcat.max-http-post-size=1GB
server.tomcat.max-http-response-header-size=1GB
server.tomcat.max-swallow-size=1GB

就是这几个配置


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/jsonmultipart/form-data

  • 区别:这是 Tomcat 提供的全局限制,与 Spring Boot 的 max-file-sizemax-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-sizemax-http-form-post-size,Tomcat 默认会吞掉超过部分的数据。
    • max-swallow-size 限制了这些被丢弃的数据大小。
    • 设置为 -1,表示无限制。
  • 示例

    1
    server.tomcat.max-swallow-size=1GB

    如果请求被拒绝(例如文件过大),最多仍然允许吞掉 1GB 的数据。


如何选择配置

  1. 文件上传场景

    • 配置 spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size,这是 Spring Boot 针对 multipart 请求的专用配置。
    • 如果 Tomcat 的全局限制更小,还需要调整 server.tomcat.max-http-post-size
  2. 表单提交场景

    • 配置 server.tomcat.max-http-form-post-size 以适应大表单数据提交。
    • 如果数据中包含文件,还需要同时调整 max-http-post-size
  3. 响应头限制

    • 如果你的应用需要返回较大的头信息(例如 Set-Cookie 或长 token),需要调整 server.tomcat.max-http-response-header-size
  4. 吞吐大数据场景

    • 如果请求数据较大且频繁出错,需要调整 server.tomcat.max-swallow-size,防止吞掉数据过多。

最佳实践

  • 不要设置极大的值(如 1GB),因为这可能会导致内存溢出或性能问题。
  • 调整配置时,尽量依据实际需求并确保客户端(如浏览器、前端应用)支持相应的大小限制。
  • 配置 Tomcat 和 Spring Boot 限制时,注意它们之间的相互关系,避免设置冲突。