Java Springboot on HTTPS:如何将默认的HTTP端口8080更改为另一个值



嗨,Java和Springboot Gurus,

这是关于我使用 springboot 在 Java 中创建的一个项目。
我能够在春季启动中成功创建和设置https项目。 然后要设置 HTTPS 端口,我只需通过命令行设置,而不是通过终端中的以下命令在 application.properties 中设置:

$ java -Dserver.port=6001 -jar myapp-0.0.1.jar

我这样做是为了我可以轻松地创建将在其他端口上运行的其他实例,例如 6002、6003 等......

但问题是,tomcat设置了这个默认的HTTP端口:

2019-08-16 02:42:36.768  INFO 6 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 6001 (https) 8080 (http)

我想摆脱它或可能将其分配给另一个端口,例如 6081.
我已经阅读了这篇文章,并以编程方式设置了它。
但我想避免这种情况.
我只是希望它是我可以在命令行中添加为参数的东西,例如 -Dserver.port=6001。尽可能避免使我的项目进一步复杂化。
我试过这样做:

$ java -Dserver.port=6001 -Dserver.http.port=6081 -jar myapp-0.0.1.jar


...但它不起作用.

您的想法和意见将不胜感激!

您是否尝试过在 application.properties 中设置 server.port=-1。请参阅 Spring Boot 文档。

[更新]

您可以将您的 HTTP 重定向到 HTTPS。

为此,您需要另一个连接器。SpringBoot 不允许使用应用程序属性配置多个连接器。因此,我们可以以编程方式编写连接器。雄猫的连接器示例:

@Configuration
public class MyTomcatConnector {
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};  
tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
return tomcat;
}  
private Connector initiateHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(6001);
return connector;
}
}

最新更新