Java skill - 服务同时开始https和http端口
- 添加ssl配置
- 代码开启http端口
- 讲解
- 大坑
添加ssl配置
在配置文件中添加配置
server:# ssl证书配置ssl:# 双向证书配置# 证书文件路径key-store: /opt/ops/cert/xes.p12# 证书密码key-store-password: 123456# 证书类型key-store-type: PKCS12# 开启sslenabled: true# 证书文件路径trust-store: /opt/ops/cert/xes.p12# 证书密码trust-store-password: 123456# 证书类型trust-store-type: PKCS12# 访问必须传入证书client-auth: need# https端口port: 7001
代码开启http端口
@Configuration
public class TomcatConfig {@Beanpublic 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 - 指定服务打开两个端口的顺序】