Spring boot 有一些属性来配置 web 端口和 SSL 设置,但是一旦设置了 SSL 证书,http 端口就会变成 https 端口。
那么,我怎样才能让两个端口同时运行,例如:80 和 443?
如你所见,只有一个端口的属性,在这种情况下“server.ssl”是启用的,是什么让http端口被自动禁用。
##############
### Server ###
##############
server.port=9043
server.session-timeout=1800
server.ssl.key-store=file:///C:/Temp/config/localhost.jks
server.ssl.key-store-password=localhost
server.ssl.key-password=localhost
server.ssl.trust-store=file:///C:/Temp/config/localhost.jks
server.ssl.trust-store-password=localhost
我正在尝试使用 Tomcat 或 Undertow。如有任何帮助,我将不胜感激!
最佳答案
Spring Boot 配置使用属性,只允许配置一个连接器。您需要的是多个连接器,为此,您必须编写一个配置类。按照
中的说明进行操作您可以在下面找到通过属性配置 HTTPS 和通过 EmbeddedServletContainerCustomizer 配置 HTTP 的工作示例
server:
port: 8080
ssl:
enabled: true
keyStoreType: PKCS12
key-store: /path/to/keystore.p12
key-store-password: password
http:
port: 8079
@Configuration
public class TomcatConfig {
@Value("${server.http.port}")
private int httpPort;
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
TomcatEmbeddedServletContainerFactory containerFactory =
(TomcatEmbeddedServletContainerFactory) container;
Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
connector.setPort(httpPort);
containerFactory.addAdditionalTomcatConnectors(connector);
}
}
};
}
}
关于java - 如何设置 Spring Boot 以运行 HTTPS/HTTP 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896234/