Java skill - 服务同时开始https和http端口
添加ssl配置
在配置文件中添加配置
yml
server:
# ssl证书配置
ssl:
# 双向证书配置
# 证书文件路径
key-store: /opt/ops/cert/xes.p12
# 证书密码
key-store-password: 123456
# 证书类型
key-store-type: PKCS12
# 开启ssl
enabled: true
# 证书文件路径
trust-store: /opt/ops/cert/xes.p12
# 证书密码
trust-store-password: 123456
# 证书类型
trust-store-type: PKCS12
# 访问必须传入证书
client-auth: need
# https端口
port: 7001
代码开启http端口
java
@Configuration
public class TomcatConfig {
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat;
}
/**
* 配置http
* @return
*/
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(7000);
return connector;
}
}
讲解
- 服务启动后,yml的ssl配置会执行并开启7001的https端口
- 然后,新加的配置类会执行并开启7000的http端口
大坑
这种配置方式会先开启https-7001端口,然后才打开http-7000端口,如果需要nacos注册发现的话,nacos发现的是https-7001端口,如果你这个服务被其他服务通过feign调用的话,就会请求错误,因为feign默认的是http请求,但是feign在nacos拿到的7001端口是https端口,所以,这一点大家一定要注意
如果大家想解决这个问题,那就需要先打开http端口,然后打开https端口,分享给大家这篇文章【Java skill - 指定服务打开两个端口的顺序】