Tomcat中server.port属性的奇怪行为

时间:2018-08-22 16:28:26

标签: spring spring-boot tomcat ssl https

实际上,这不是问题,但我想理解是一件奇怪的事情。我将SpringBoot2与嵌入式Tomcat一起使用。并且我添加了自签名SSL证书。这是很普通的配置:

server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=123456
server.ssl.key-alias=tomcat
server.port=8443

我建立了一个连接器,以强制http-> https重定向,就像许多示例中一样:

private Connector getHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(8443);
        return connector;
    }

如果我不会在配置中指定server.port属性,则会看到以下错误:

  

说明:

     

配置为侦听端口8080的Tomcat连接器无法   开始。该端口可能已在使用中,或者连接器可能已在使用中   配置错误。

     

操作:

     

验证连接器的配置,识别并停止任何过程   在端口8080上监听,或配置此应用程序以监听   在另一个端口上。

但是,如果我愿意,我会看到以下内容:

  

o.s.b.w.embedded.tomcat.TomcatWebServer:Tomcat在端口上启动:   8443(https)8080(http),上下文路径为

为什么server.port开始指向https端口???甚至springframework.boot.autoconfigure.web.ServerProperties的来源都说是

/**
 * Server HTTP port.
 */

可以,还是我的服务器中有些奇怪的东西?还是这是选区商的工作方式? :)谢谢

1 个答案:

答案 0 :(得分:1)

默认情况下,如果未在属性文件中为server.port提供任何值,则嵌入式服务器将从端口8080开始 并且您还将连接器端口指定为8080(connector.setPort(8080);) 因此,您会遇到端口冲突。