【问题标题】:Spring Boot, Enable compression on multiple portsSpring Boot,在多个端口上启用压缩
【发布时间】:2018-03-15 18:53:02
【问题描述】:

在我们的 Spring Boot 应用程序中,我们需要一个安全和非安全端口。我已通过 application.properties 文件将端口 3000 配置为安全:

# Override default port setting
server.port=3000

# Enable SSL
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=#####
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat

并在一些代码中将端口 8080 设置为非安全:

@Bean
public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setPort(8080);
    tomcat.addAdditionalTomcatConnectors(connector);
    return tomcat;
}

现在,我想启用压缩传递,所以我在 application.properties 中添加了:

# Embedded Server Compression
server.compression.enabled=true
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,image/svg+xml,application/json
server.compression.min-response-size=2048

这似乎是一个服务器范围的设置,但 8080 端口不传送压缩数据,而 3000 则很好。如果我理解正确,创建 8080 连接器的 bean 正在使用主服务器。我尝试了几种设置组合,例如使用旧属性在 8080 连接器上启用压缩,但无济于事。所以我请求大师帮助解决这个问题。

提前谢谢你。

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    您在协议级别设置压缩,如下所示。

    @Bean public EmbeddedServletContainerFactory servletContainer() {
    
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    
        Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
        protocol.setCompressibleMimeType("text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,image/svg+xml,application/json");
        protocol.setCompression("on");
        protocol.setCompressionMinSize(2048);
    
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
    
        tomcat.addAdditionalTomcatConnectors(connector);
        return tomcat;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 2023-03-25
      • 2014-03-27
      • 2020-09-23
      • 2016-11-08
      • 2021-06-03
      • 2018-05-13
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多