版权声明:不正确的地方还恳请指出,真心感谢! https://blog.csdn.net/m0_38032942/article/details/88084971
一、Tomcat配置
主要就是下图这些配置,完整配置参考Appenddix A.Common application properties 一节:
二、HTTPS配置
由于HTTPS的安全性,开发中经常使用到的就是HTTPS,像微信公众号小程序的开发都需要HTTPS来完成,对于个人了开发者来说一个HTTPS证书还是很昂贵的,国内一些云服务器厂商提供免费的HTTPS证书,一个账号可以申请数个。不过在JDK中提供了一个Java数字证书管理工具keytool,在jdk/bin目录下,通过这个工具可以生成一个数字证书:
D:\Program Files\Java\jdk1.8.0_201\bin>keytool.exe -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore sang.p
12 -validity 365
命令解释:
-genkey 表示要创建一个新的秘钥
-alias 表示keystore的别名
-keyalg 表示使用的是加密算法RSA,一种非对称加密算法
-keysize 表示秘钥的长度
-keystore 表示秘钥的存放位置
-validity 表示秘钥的有效期,单位是:天
把密匙文件放在项目根目录下,然后在配置即可,分别是秘钥的名称,别名和生成秘钥时的密码,如下图:
此时访问http://localhost:8080/hello:
由于证书是自己生成的,不被浏览器认可,被认为是不安全连接,此时继续前往即可!
那么使用传统的HTTP协议访问不到的时候应该怎么办呢?是因为SpringBoot不支持同时在配置中启动HTTP和HTTPS,可以将HTTP重定向到HTTPS请求:
@Configuration
public class TomcatConfig {
@Bean
TomcatServletWebServerFactory tomcatServletWebServerFactory(){
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(){
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
factory.addAdditionalTomcatConnectors(createTomcatConnector());
return factory;
}
private Connector createTomcatConnector(){
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8081);
return connector;
}
}
三、Jetty配置与Undertow
除了Timcat意外亦可以在SpringBoot配置Jetty,配置方式:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 去除默认的Tomcat -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
</dependencies>
Undertow是一个红帽公司开源的Java服务器,性能还是不错的,在SpringBoot中也得到了很好的支持,配置方式与Jetty一致: