[Java]Tomcat/Nginx/SpringBoot无法POST较大数据(如上传文件)解决办法

2021-05-20 965点热度 0人点赞 0条评论

装好nginx或者tomcat后,Java应用(Nginx是通过proxy来调用Tomcat应用的)如果POST比较大的数据,会报错

所以需要对Tomcat和Nginx进行一些参数调整,如果是SpringBoot的tomcat应用,则需要对application.properties调整

Tomcat调整

找到tomcat目录下的/conf/server.xml,修改配置文件,找到Connector,添加maxPostSize参数

我这里设置的是-1,表示不做大小限制(因为我这边上层还有nginx,只需要在nginx设置好就可以了)。

不设置maxPostSize参数意为使用默认的大小,默认2097152,单位是bytes,即为2097152/1024 = 2048KB = 2MB

tomcat7.0.63之前 给maxPostSize设置小于等于0的值都可表示不限制,但是之后的Tomcat版本默认2MB就有点小了,所以要自定义设置!

SpringBoot调整

修改application.properties

server.tomcat.max-http-form-post-size=50MB

nginx调整

如果你的Tomcat上层还有nginx,那么可以调整nginx

找到nginx的配置文件(可能是/etc/nginx/nginx.conf)

在server下增加client_max_body_size:

http {
    # 其他配置省略

    # 为了快速寻找到相应MIME type,Nginx使用散列表来存储MIME type与文件扩展名。
    types_hash_max_size 2048;
    # hash表可保存服务器名字的数量(32的倍数)
    server_names_hash_bucket_size 512;

    server {
        # 其他配置省略
        
        # client_max_body_size 修改大一些
        client_max_body_size 50m;
    }
}

例子里client_max_body_size应该是post的时候,body的大小,我改成了50MB,重新启动systemctl restart nginx就可以生效了!

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论