解决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的设置,
这篇博客内容
看了这篇博客,接着去查看Linux下的项目使用的统一的Tomcat版本,使用的版本是Tomcat 7.0.70,接着看这篇文章你还能说什么,改呗,将属性maxPostSize修改为-1,代表不限制,重启Tomcat服务器,重新登录网站和以上出现的问题都没有了。
附上这个博主的博客地址:https://www.jb51.net/article/190134.htm
总结:想着昨天出现的这个问题,今天休息正好可以总结一下,接着去看Tomcat官网上的相关文档,去看下这个问题。如今Tomcat版本更新很快,很多Tomcat7的版本不再好找,我们可以查看最新的Tomcat7版本信息,打开Tomcat官网后,查看
Documention下的Tomcat7.0
接着查看Reference下的Configuration部分
接着查看Connectors下的HTTP部分,这个和Tomcat下的conf中的server.xml配置文件的结构有很大的相关性,只要你很熟悉server.xml配置,那么找到这个不是问题
查看相关属性,我们就会看到maxPostSize的详细介绍,这个限制必须设置为小于0的负数才能不限制,缺省下是2097152,也就是2M的大小,单位是Byte。
你要知道以上的介绍仅仅是Tomcat 7.0.86版本的信息
那么我们怎么看Tomcat历史版本的变化呢,回到刚开始进来的文档首页,点击最下方的Changelog部分,
这里面是Tomcat7所有的历史版本的变化,我们找到Tomcat 7.0.63版本,可以看到变化的第一项就是关于maxPost属性的内容,上面的博客的哥们果然是满满的干货,虽然内容少,但是一击必中啊。
通过以上的总结,如果以后出现类似的问题,排查问题的能力要有所提升,自己总结问题的排查步骤:
- 第一:查看服务器上的各种日志
- 第二:查看服务器上的各种配置文件
- 第三:考虑各个版本的差异,就比如上面的问题,这个前提是你要知道你修改了哪些配置,增加了哪些配置。
总结
到此这篇关于解决Tomcat的maxPostSize属性的配置需要注意的问题的文章就介绍到这了,更多相关Tomcat的maxPostSize属性配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!