关于Tomcat的maxPostSize属性的配置需要注意的问题
需求:
近期要做大文件上传功能,除了修改前端框架上传控件jQuery Uploadify的上传文件限制大小和Spring MVC框架配置的文件上传模块中的MultipartResolver中的文件上传限制大小,还需要去修改Nginx服务器中conf目录下的nginx.conf配置文件中的client_max_body_size属性以及Tomcat服务器中conf目录下的server.xml配置文件中的connectionTimeout属性、maxPostSize属性,以上内容就是我做的修改。
问题:
先是修改Nginx服务器和Tomcat服务器的配置,重启Nginx服务器,再是修改页面和代码后重新部署和运行,然后在页面进行大文件上传操作,然后提交保存都出现了问题,自己怀疑可能是大文件保存出现了问题,忙着去查看服务器上的日志,接着同事又说文件删除功能失效,接下来又有同事说网站登录不上了,输入正确的验证码后报错说是验证码登录过期,,,,各种问题接踵而至,看了半天的服务器日志没有发现问题,还是自己看的不仔细,也没有定位到问题出现在哪里。
排查:
无奈去请求大牛,先是问我修改了哪些东西,我说Nginx服务器和Tomcat服务器的配置我都修改了,大牛看了Linux上的Nginx服务器的配置文件和Tomcat服务器的server.xml配置文件,回头问我maxPostSize=“0”属性的配置是什么意思,我说是HTTP的POST请求下的body大小不做限制,如果不设置的话,缺省的情况下是maxPostSize=“2097152”,也就是2M的大小,因为单位是Byte。大牛接着去查看了相关资料,得知可能是Tomcat版本带来的问题,不同的Tomcat版本maxPostSize属性设置的可能有差异,知道了问题所在,那么就去着手进行配置了。
解决:
百度了下Tomcat maxPostSize这两个关键词,很幸运的是第一条就是关于Tomcat不同版本的maxPostSize的设置,
![](https://i-blog.csdnimg.cn/blog_migrate/b0df6f4907edef64ca00ebf04a9d5351.png)
这篇博客内容
![](https://i-blog.csdnimg.cn/blog_migrate/03d96d0a3d9ba354abfde73630230ed8.png)
看了这篇博客,接着去查看Linux下的项目使用的统一的Tomcat版本,使用的版本是Tomcat 7.0.70,接着看这篇文章你还能说什么,改呗,将属性maxPostSize修改为-1,代表不限制,重启Tomcat服务器,重新登录网站和以上出现的问题都没有了。
总结:
想着昨天出现的这个问题,今天休息正好可以总结一下,接着去看Tomcat官网上的相关文档,去看下这个问题。
如今Tomcat版本更新很快,很多Tomcat7的版本不再好找,我们可以查看最新的Tomcat7版本信息,打开Tomcat官网后,查看Documention下的Tomcat7.0
![](https://i-blog.csdnimg.cn/blog_migrate/2c5e760be4515651b2fb2842ada38352.png)
接着查看Reference下的Configuration部分
![](https://i-blog.csdnimg.cn/blog_migrate/bfc0ee04016385c3800a140981d447c6.png)
接着查看Connectors下的HTTP部分,这个和Tomcat下的conf中的server.xml配置文件的结构有很大的相关性,只要你很熟悉server.xml配置,那么找到这个不是问题
![](https://i-blog.csdnimg.cn/blog_migrate/c2b9ad0421d13e7ad585c57e76c7f3a0.png)
查看相关属性,
我们就会看到maxPostSize的详细介绍,这个限制必须设置为小于0的负数才能不限制,缺省下是
2097152,也就是2M的大小,单位是Byte。
![](https://i-blog.csdnimg.cn/blog_migrate/7509643db0b9e644621c44b904838b73.png)
你要知道以上的介绍仅仅是Tomcat 7.0.86版本的信息
![](https://i-blog.csdnimg.cn/blog_migrate/9f6c6b8602d43ad97001c718f700d16d.png)
那么我们怎么看Tomcat历史版本的变化呢,回到刚开始进来的文档首页,点击最下方的Changelog部分,
![](https://i-blog.csdnimg.cn/blog_migrate/7f3646bffd737ec97a82b149d14c71ae.png)
这里面是Tomcat7所有的历史版本的变化,我们找到Tomcat 7.0.63版本,可以看到变化的第一项就是关于maxPost属性的内容,上面的博客的哥们果然是满满的干货,虽然内容少,但是一击必中啊。
![](https://i-blog.csdnimg.cn/blog_migrate/4430b63534fddc2f2a0f39d62cee5a3a.png)
通过以上的总结,如果以后出现类似的问题,排查问题的能力要有所提升,自己总结问题的排查步骤:
第一:查看服务器上的各种日志
第二:查看服务器上的各种配置文件
第三:考虑各个版本的差异,就比如上面的问题,这个前提是你要知道你修改了哪些配置,增加了哪些配置。