原本公司的需求是需要将公司域名设置成https格式,因为小程序要使用,结果测试多次发现,如果将项目重定向到80端口上会发生出现网站内容跟备案内容不符合的问题,由此改变方法将带端口号的设置为https
一、初试阶段
不懂的情况下通过nginx试图配置8085端口为https的格式,结果经过很多次测试发现根本行不通,在放弃的最后发现原来8085端口是Tomcat下的配置,根本不是跟浏览器一个性值的,所以说Tomcat跟浏览器是两个性质,最后找到解决办法通过配置springboot项目内置的tomcat来配置https。
二、测试阶段
查看了多篇文章进行解决问题,结果配置了很久每次都是运行不起来,经过排错发现,配置内置tomcat会根据当前springboot版本的不同而发生变化,经发现我们的springboot项目是2.4.0的 内置的tomcat已经是9版本的tomcat了,而配置tomcat为https必须是8.4往上的版本,经考虑觉得还是降低tomcat更好,结果降低版本之后也是接踵而来的报错,最后没办法了降低了springboot版本的,降低到2.0.1,因为2.0.1的Tomcat版本正好是8.4.0的,然后真的就成功了!放到服务器上成功跑起来了,最后将所有配置放上。
三、代码配置
package com.ics;
import org.apache.catalina.connector.Connector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.wf.jwtp.configuration.EnableJwtPermission;
/**
* 启动程序
*
*/
@EnableJwtPermission
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class ApplicationRun {
public static void main(String[] args) {
SpringApplication.run(ApplicationRun.class, args);
}
//下面是2.0的配置,1.x请搜索对应的设置
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createHTTPConnector());
return tomcat;
}
private Connector createHTTPConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
//同时启用http(8080)、https(8443)两个端口
connector.setScheme("http");
connector.setSecure(false);
connector.setPort(8093);
connector.setRedirectPort(8085);
return connector;
}
}
然后再yml中配置密钥跟对应的密钥密码(重要)