问题:
最近部署项目,用到的Tomcat 版本:7.0.82.0,发现一直登陆不了,查询发现原来前端的数据传递不到后端.
排查问题:
通过debug日志发现,后端没有接受到前端用户的登陆数据,检查发现Tomcat在server.xml中加入了,
maxPostSize=0这个参数,先删除这个参数发现数据过去了
分析:
查询了表示maxPostSize=0表示post请求不限制大小的,google了半天才发现,原来从 apache-tomcat-7.0.63
开始,参数 maxPostSize 的含义就变了:
如果将值设置为 0,表示 POST 最大值为 0,不限制 POST 大小需要将值设置为 -1。
在此版本之前设置为 0 表示不限制 POST 大小。它挟制post请求.
tomcat 7 及 以上版本
解决:
打开tomcat-conf-server.xml 配置文件
增加 maxPostSize="-1" 后:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="-1"
maxHttpHeaderSize ="102400"
URIEncoding="UTF-8" />
开发环境测试:(内嵌tomcat)
springboot
配置文件 改为 server.tomcat.max-http-form-post-size = -1
其他参数配置:
<Connector
executor="tomcatThreadPool" 执行器
port="8088" 端口号
protocol="org.apache.coyote.http11.Http11NioProtocol" 协议:Http11NioProtocol并发处理量大
maxThreads="4000" 最大连接数
minSpareThreads="30" 服务器启动时创建的处理请求的线程数
connectionTimeout="60000" 指定超时的时间数(以毫秒为单位) 1秒 = 1000毫秒 这里为60s
redirectPort="8443" 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
enableLookups="false" enableLookups:调用request、getRemoteHost()执行DNS查询,
以返回远程主机的主机名,如果设置为false,则直接返回IP地址。
acceptCount="1000" 当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
maxPostSize="10485760" 当maxPostSize="-1"时 POST方式上传的文件大小不会被限制;
这里为10M,1024*1024*10;单位:字节
maxHttpHeaderSize="8192" http最大请求头大小设置8194/1024 = 8k
compression="on" 是否启用压缩 on为启用(文本数据压缩)
disableUploadTimeout="true" 允许Servlet容器,正在执行使用一个较长的连接超时值,
以使Servlet有较长的时间来完成它的执行
compressionMinSize="2048"
acceptorThreadCount="2"
compressableMimeType="text/html,text/plain,text/css,application/javascript,
application/json,application/x-font-ttf,application/x-font-otf,image/svg+xml,image/jpeg,
image/png,image/gif,audio/mpeg,video/mp4"
processorCache="2000" 启用压缩的输出内容大小,这里面默认为2KB
tcpNoDelay="true" 禁用了Nagle算法,允许小包的发送
connectionLinger="5" socket linger参数值。当socket即将关闭时(前)阻塞的时间,单位:秒。
如果设置为-1,表示关闭linger。在BIO(Blocking IO)和AJP链接中默认为100,NIO中默认为25.
server="Server Version 11.0"
useBodyEncodingForURI="true" 若请求体采用utf-8解析,则请求参数也要采用utf-8来解析
allowTrace="false" 防止http TRACE 跨站攻击
/>
Tomcat-Post请求超限制
最新推荐文章于 2024-01-21 14:44:21 发布