如何避免在Spring Boot应用程序中编写显式端口号(8443)

时间:2017-05-10 10:10:50

标签: java spring spring-mvc ssl spring-boot

我有一个在DigitalOcean Droplet上运行的Spring Boot应用程序(arbejdsdag.dk)。我已经成功安装了LetsEncrypt SSL证书,但也可以。

但是,除非我在URL后明确添加SSL端口,否则我无法访问该站点。

所以: arbejdsdag.dk:8443工作正常 arbejdsdag.dk返回404(未找到)错误

我也有从HTTP到HTTPS的重定向。

  @Bean
  @Profile("PROD") 
  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;
  }


  @Profile("PROD") 
  private Connector initiateHttpConnector() {
    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setPort(8080);
    connector.setSecure(false);
    connector.setRedirectPort(8443);

    return connector;
  }

在应用程序属性中将端口设置为8443作为pr。 Spring Boot文档。

server.port=8443

我希望只需输入网址即可访问该网站,而无需明确添加端口号。我错过了什么?

1 个答案:

答案 0 :(得分:1)

端口必须为443,以便浏览器默认使用https而不使用端口号。变化

server.port=8443

server.port=443

但请注意,您必须以特权用户身份运行应用程序才能在基于* NIX的系统上打开低于1000的端口。