【问题标题】:Strange behavior of server.port property in TomcatTomcat 中 server.port 属性的奇怪行为
【发布时间】:2019-01-28 23:28:24
【问题描述】:

其实这不是问题,而是我想了解的奇怪的事情。我使用带有嵌入式 Tomcat 的 SpringBoot2。而且我添加了自签名 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.
 */

没关系,或者我的服务器中有一些奇怪的东西?或者这就是 Conectors 的工作方式? :) 谢谢

【问题讨论】:

    标签: spring spring-boot tomcat ssl https


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多