Spring Boot内置Tomcat设置超时时间
最近有个小工程扫描出一个安全漏洞, SlowHttp慢速攻击的,需要修改 Tomcat 的配置,也正好关于 Tomcat 的参数调优,正好记录一下。
漏洞信息
查了一下这个漏洞,漏洞有两个解决方法,
1 是通过 Nginx
2 是 Tomcat 设置超时时间
关于这个漏洞,可以看下以下这篇博客:
https://www.cnblogs.com/xiaoliu66007/p/10174672.html
看了下项目好像没有 Nginx,所以还是设置超时时间吧。
配置 Spring Boot 内置 Tomcat 参数的时候,需要区分 Spring Boot 的 版本,刚开始的时候我用的是 2.0 以下的方法,发现提示 EmbeddedServletContainerCustomizer 不存在,后来查询才发现,2.0 往上的版本写法不一样了。
1.x 版本通过实现 org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer 的customize方法来实现自定义配置。
2.x 版本使用 WebServerFactoryCustomizer 接口替换 EmbeddedServletContainerCustomizer 组件完成对嵌入式Servlet容器的配置。
解决的话看下自己对于的版本来进行配置。
解决
Spring Boot 1.x 版本
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @Author: lixj* @Date: 2020/6/8 12:02*/
@Configuration
public class WebServerConfiguration {@Beanpublic EmbeddedServletContainerFactory createEmbeddedServletContainerFactory() {TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();tomcatFactory.setPort(8082);tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());return tomcatFactory;}class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer {public void customize(Connector connector) {Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();// 设置最大连接数protocol.setMaxConnections(2000);// 设置最大线程数protocol.setMaxThreads(2000);// 设置超时时间protocol.setConnectionTimeout(20000);}
}}
Spring Boot 2.x 版本
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;import java.nio.charset.Charset;/*** @Author: lixj* @Date: 2020/6/8 14:09*/
@SpringBootConfiguration
public class WebServerConfiguration {@Beanpublic ConfigurableServletWebServerFactory webServerFactory() {TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();factory.setPort(8888);factory.setUriEncoding(Charset.forName("utf-8"));//编码factory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());return factory;}class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer {@Overridepublic void customize(Connector connector) {Http11NioProtocol handler = (Http11NioProtocol)connector.getProtocolHandler();handler.setAcceptCount(1000);// 排队数handler.setMaxConnections(1000);// 最大连接数handler.setMaxThreads(500);// 线程池的最大线程数handler.setMinSpareThreads(50);// 最小线程数handler.setConnectionTimeout(20000);// 超时时间 20S}}}
后续:修改20秒后漏洞还在,把超时时间改为8秒了,重新扫描后漏洞没有了。
Spring Boot内置Tomcat设置超时时间相关推荐
- Spring Boot 内置Tomcat——集成PHP解决方案
Demo:https://gitee.com/shentuzhigang/mini-project/tree/master/springboot-embed-tomcat-php-demo 问题分析 ...
- Spring Boot 内置Tomcat——getServletContext().getRealPath()为临时目录问题解决方案
问题描述 getServletContext().getRealPath()为临时目录 问题分析 默认情况下Spring Boot中request.getServletContext().getRea ...
- Spring Boot——内置Tomcat配置阿里云免费SSL证书(PFX格式证书)[启用HTTPS协议]
基本概念 SSL证书:SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA ...
- Spring Boot 内置Tomcat——IntelliJ IDEA中配置模块目录设为文档根目录(DocumentRoot)解决方案
源码分析 org.springframework.boot.web.servlet.server.DocumentRoot /*** Returns the absolute document roo ...
- 项目部署—移除Spring Boot内置Tomcat,部署到云服务器Tomcat
以往部署Java web项目到阿里云服务器时,直接将项目打包成war包,放到阿里云服务器中tomcat的webapps目录下,就可以访问了. SpringBoot默认给我们提供了内置tom ...
- Spring Boot 内置Tomcat——集成JSP解决方案
解决方案 一.创建webapp目录 在src/main下创建webapp目录,用于存放jsp文件.这就是一个普通的目录,无需执行Mark Directory As 二.创建JSP 1.指定web资源目 ...
- Spring Boot内置Tomcat的静态资源配置(在页面中显示项目外的某个图片)
哇~我现在只想长长的舒一口气,终于解决了 ~ 记录一下 好,下面开始我的第一个博客,写的不好还请大家见谅~ Spring Boot项目是在官网自动生成的,目录如下: 在红线圈住的"ap ...
- 修改Spring boot内置的tomcat端口
介绍两种种简单的修改spring boot内置端口的方法: 第一种:在入口直接设置端口,代码如下所示: public static void main(String[] args){SpringApp ...
- spring boot内嵌tomcat优雅的开启apr模式
文章目录 简介 Win下开启APR Linux下开启APR 把lib打进jar包 简介 环境: jdk8.spring boot 2.3.4.RELEASE.centOS7.3.win7 在sprin ...
最新文章
- AcWing 734. 能量石 (01背包)+(贪心 - 领项交换)
- VTK:图表之ColorVertexLabels
- mac 安装 python 配置||虚拟环境
- python给出数据点进行插值_Python对数据进行插值和下采样的方法
- 大数据之HBase部署
- 品质生活在于细节 8月6日张朝阳“做饭直播”带货厨房好物
- ChaiNext:大盘横盘,主流币未有突出表现
- 从零配置webpack(react+less+typescript+mobx)
- matlab钢材切割,一种基于MATLAB的钢材裂纹扩展速率试验数据处理方法
- VS2015打开cshtml视图页文件报错 未将对象引用设置为实例 解决办法
- windows下MATLAB2016a安装配置
- cad放大_最新CAD软件插件大全+上千款字体,内附使用教程,只分享3天
- asc超级计算机题目,ASC世界大学生超级计算机竞赛赛题:单张图像超分辨率
- 操作系统:作业调度算法--先来先服务
- Android之底部菜单栏的实现
- 阿里公司将推出债卷,数字巨大
- 入职一年感言简短_如何在Windows任务栏中放入简短说明
- envoy实现_使用Envoy实现一键部署项目
- 答题小程序为何那么火?
- 1091: 童年生活二三事(多实例测试)Python