不在网址中使用端口

时间:2016-07-01 01:29:47

标签: spring-boot iptables tomcat8

我使用spring boot(嵌入tomcat)和ssl。

实际上,我需要在网址中输入端口(8443)才能访问网络应用程序。

如何才能使用domnain名称?

喜欢的东西 https://www.bob.com

而不是

https://www.bob.com:8443/

修改

@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(createHttpConnector());
    return tomcat;
}

private Connector createHttpConnector() {
    Connector connector
            = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setSecure(false);
    connector.setPort(8080);
    connector.setRedirectPort(8443);
    return connector;
}

现在不需要输入端口

但如果输入bob.com,浏览器会转换为

bob.com:8443

2 个答案:

答案 0 :(得分:4)

浏览器用于HTTP的默认端口为80,HTTPS为443.如果您在443上运行应用程序(因为您使用的是HTTPS),则不必使用端口号,浏览器将自动重新路由您的URL。要更改spring-boot应用程序中的端口号,请在bootstrap.yml中指定server.port属性。

server:
  port: 443

答案 1 :(得分:0)

你的意思是这样吗?

String webPort = System.getenv("PORT");

    if(webPort == null || webPort.isEmpty()) {
        webPort = "8080";
    }