HTTPS : how to change default http port 8080 to another value 上的 Java Spring Boot

标签 java spring-boot http tomcat https

嗨,Java 和 Springboot 大师们,

这是关于我使用 springboot 在 Java 中创建的一个项目。
我能够在 spring boot 中成功创建和设置 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.
我读过这个article ,并以编程方式进行设置。
但我想避免这种情况。
我只是希望它是我可以在命令行中添加为参数的东西,例如 -Dserver.port=6001。为了尽可能避免使我的项目进一步复杂化。
我试过这样做:

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


... 但它不起作用。

非常感谢您的想法和意见!

最佳答案

您是否尝试过在 application.properties 中设置 server.port=-1。参见 Spring Boot doc .

[更新]

您可以将 HTTP 重定向到 HTTPS。

为此,您需要另一个连接器。 SpringBoot 不允许使用 application.properties 配置多个连接器。所以我们可以通过编程方式编写一个连接器。 Tomcat 的连接器示例:

@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;
    }
}

关于HTTPS : how to change default http port 8080 to another value 上的 Java Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57518669/

相关文章:

http - 如果代理根本没有收到响应,是否应该使用 502 HTTP 状态代码?

java - JSON:获取 JSON 对象列表

java - 如何在Java类方法中访问私有(private)变量

java - 检查文本字段和组合框中的条目以启用按钮 Java 桌面应用程序

java - 顺时针旋转链表

spring-boot - 为什么 Spring Boot 会为 Controller 方法参数验证抛出不同的异常?

java - Spring Boot 中 WebClient 中的 POST 请求并以 JSONObject 形式接收响应

java - 如何将convertAndSendToUser()与外部代理(例如Spring4中的RabbitMQ)一起使用?

angularjs - 在 Angular 模块中获取 Django request.user

nc 收到时的 HTTP 错误响应