首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot 2.1,带有带http/2和ssl的嵌入式Tomcat,gzip不工作

Spring Boot是一个用于简化Spring应用程序开发的框架。它提供了一种快速构建可独立运行的、生产级别的Spring应用程序的方式。Spring Boot 2.1是Spring Boot的一个版本。

嵌入式Tomcat是Spring Boot默认的Web服务器,它可以将应用程序打包成一个可执行的JAR文件,并且内置了Tomcat容器,使得应用程序可以直接运行,而无需额外安装和配置外部的Web服务器。

HTTP/2是一种网络协议,它是HTTP协议的下一代版本。相比于HTTP/1.1,HTTP/2具有更高的性能和效率,可以实现多路复用、头部压缩、服务器推送等特性,从而提升Web应用的性能和用户体验。

SSL(Secure Sockets Layer)是一种用于保护网络通信安全的协议。它通过对网络通信进行加密和身份验证,确保数据在传输过程中不被窃取或篡改。在Web应用中,SSL常用于实现HTTPS协议,为网站提供安全的加密通信。

Gzip是一种数据压缩算法,可以将文本数据进行压缩,从而减小数据的传输大小,提高网络传输效率。在Web应用中,Gzip常用于压缩HTTP响应,减少网络传输的数据量,加快页面加载速度。

对于Spring Boot 2.1中带有HTTP/2和SSL的嵌入式Tomcat,gzip不工作的问题,可能是由于配置不正确或者缺少必要的依赖导致的。可以尝试以下解决方法:

  1. 确保在Spring Boot的配置文件中正确配置了HTTP/2和SSL相关的属性。例如,可以使用server.http2.enabled=true启用HTTP/2,使用server.ssl.enabled=true启用SSL。
  2. 确保在项目的依赖管理中添加了正确的Tomcat和SSL相关的依赖。例如,可以添加以下依赖:
代码语言:txt
复制
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-logging-juli</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-websocket</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-annotations-api</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jasper</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jasper-el</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jsp-api</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-juli</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-util</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-util-scan</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket-api</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket-client</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket-server</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket-servlet</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket-api</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket-client</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket-server</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-websocket-servlet</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jni</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp-pool2-dbcp2</artifactId>
    <version>9.0.54</version>
</dependency>
  1. 确保在应用程序的配置文件中启用了Gzip压缩。例如,可以使用以下配置:
代码语言:txt
复制
server.compression.enabled=true
server.compression.mime-types=text/html,text/xml,text/plain,text/css,application/javascript,application/json

如果以上方法仍然无法解决问题,建议查阅Spring Boot官方文档、Tomcat官方文档以及相关技术论坛,寻求更详细的解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

重学SpringBoot系列之嵌入式容器配置与应用

为Web容器配置HTTPS 如何生成自签名证书 将SSL应用于Spring Boot应用程序 测试 将HTTP请求重定向为HTTPS ssl证书配置可参考文章 切换到jetty&undertow容器...依赖 新增加一个类继承SpringBootServletInitializer实现configure: build要有finalName标签 打包与运行 嵌入式容器运行参数配置 在Spring Boot...当我们添加了spring-boot-starter-web依赖后,默认会使用Tomcat作为嵌入式Web容器,不需要我们单独部署,将web应用打成jar包即可运行。...---- 将SSL应用于Spring Boot应用程序 从JDK bin文件夹复制dhy-ssl-key并将其放在Spring Boot Applicationsrc/main/resources下。...替换掉tomcat,但是笔者建议这么做,也从来没这么做过。

1.7K10

如何配置Spring Boot Tomcat

1.概述 Spring Boot Web应用程序默认包含预配置嵌入式Web服务器。但在某些情况下,我们要修改默认配置以满足自定义要求。...在本教程中,我们将介绍通过application.properties文件配置Tomcat嵌入式服务器一些常见用例。 2.常见嵌入式Tomcat配置 2.1....= 8KB 请求正文最大大小: server.tomcat.max-swallow-size= 2MB 或者整个POST请求最大大小: server.tomcat.max-http-post-size...SSL 要在我们Spring Boot应用程序中启用SSL支持,我们需要将server.ssl.enabled属性设置为true,并定义SSL协议: server.ssl.enabled = true...结论 在本教程中,我们学习了一些常见Tomcat嵌入式服务器配置。要查看更多可能配置,请访问官方页面: Spring Boot application properties docs。

2.8K20
  • 免费给 Spring Boot 加个证书

    在本文中,我们将学习如何执行以下操作: 免费生成有效证书 用它配置一个 Spring Boot 应用程序 到期时续订 在我之前博客文章中,我们熟悉了带有自签名证书 Spring Boot 应用程序配置...在本节中,由于我们目标是 Spring Boot 应用程序(带有嵌入式 Jetty/Tomcat),我们只生成证书,然后与我们应用程序集成。...2 如何从 PEM 文件生成 PKCS12 文件 证书私钥分两步免费生成,可见Let's Encrypt简单性。所有这些生成材料都带有PEM扩展,Spring Boot 不支持该扩展。...3 Spring Boot 应用程序配置 现在我们想要配置我们 Spring Boot 应用程序以从证书私钥中受益,并最终准备好 HTTPS。此时,我们已经生成了我们证书私钥。...: PKCS12 server.ssl.keyAlias: tomcat 备注'require - ssl' - 表示您服务器仅处理受 HTTPS 保护请求。

    1.5K20

    超详细Spring Boot教程,搞定面试官!

    Boot 2、系统要求 2.1、Servlet容器 3、安装Spring Boot 3.1、Java开发人员安装说明 (1)Maven安装 (2)Gradle安装 3.2、安装Spring Boot...(2)使用没有父POMSpring Boot (3)使用Spring Boot Maven插件 1.3、摇篮 1.4、蚂蚁 1.5、首发 2、构建你代码 2.1、使用“默认”包 2.2、查找主要应用程序类...平台 使用Java SE平台 (2)概要 1.5、Boxfuse亚马逊网络服务 1.6、Google Cloud 2、安装Spring Boot应用程序 2.1、支持操作系统 2.2、Unix...端口 3.5、使用随机未分配HTTP端口 3.6、在运行时发现HTTP端口 3.6、配置SSL 3.8、配置HTTP / 2 (1)HTTP / 2与Undertow (2HTTP / 2与Jetty...(3)HTTP / 2Tomcat 3.9、配置访问日志记录 3.10、运行在前端代理服务器后面 (1)自定义Tomcat代理配置 3.11、配置Tomcat 3.12、使用Tomcat启用多个连接器

    6.9K20

    Spring Boot系列 – 2. Spring Boot提供特性

    六、开发web应用 Spring Boot非常适合开发web应用。你可以使用内嵌Tomcat,Jetty或Undertow轻松创建一个HTTP服务器。...嵌入servlet容器 Spring Boot支持内嵌Tomcat, JettyUndertow服务器。多数开发者只需要使用合适’Starter POM’来获取一个完全配置好实例即可。...1.1 内嵌数据库 Spring boot支持自动配置三种in-memory嵌入式DB:H2, HSQL,Derby。  无需提供URL,引入如下依赖即可使用。...Spring boot自动配置DataSource池时选择顺序如下: 由于Tomcat数据源连接池性能并发,在tomcat可用时,我们总是优先使用它。 如果HikariCP可用,我们将使用它。...通过HTTP监控管理 开发Spring MVC应用时,Spring Boot Actuator会自动配置所有打开端点,并通过HTTP暴露。

    1.7K30

    Kubernetes上实现Spring Boot SSL热重载

    本文将教你如何为在 Kubernetes 上运行 Spring Boot 应用程序配置 SSL 证书热重载。我们将使用 Spring Boot 框架 3.1 3.2 版本引入两个功能。...第二个功能使得在 Spring Boot 应用程序中嵌入式 Web 服务器中热重载 SSL 证书密钥变得很容易。让我们看看它在实践中是如何工作!...这个解决方案必须考虑到证书重新加载场景。此外,它必须同时发生在服务器端客户端,以避免通信中错误。在服务器端,我们使用嵌入式 Tomcat 服务器。...Spring Boot嵌入式服务器上实现 SSL 热重载 示例应用程序实现 我们第一个应用程序 secure-callme-bundle 在 HTTP 上公开了一个单一端点 GET /callme...它会刷新 RestTemplate bean,并在日志中打印带有最新证书信息。 最后想法 Spring Boot 最新版本极大地简化了服务器客户端 SSL 证书管理。

    17510

    spring-boot-starter大力出奇迹

    这样我们就可以得到一个可以直接执行Web应用,然后我们运行mvn spring-boot:run,就能直接启动一个基于嵌入式tomcat容器...其他必要组件… 2.3 嵌入式Web容器约定定制 ​  我们知道spring-boot-starter-web默认把嵌入式tomcat作为web容器来对外提供HTTP服务,默认使用8080端口对外监听提供服务...这里我们可能会有两个疑问: 我们不想使用默认嵌入式tomcat容器怎么办?...很简单,我们只需要引入spring-boot-starter-jetty或spring-boot-starter-undertow依赖就能替代默认嵌入式tomcat容器了。...,如: server.port server.address server.ssl.* server.tomcat.* 那若这些还满足不了你,SpringBoot甚至都允许我们直接对嵌入式Web容器实例进行定制化

    97120

    CAS+Springboot单点登录

    service(带上ST) 6、系统A拦截器收到请求后,拿出ST,向认证中心询问ST是否有效(这个步骤对用户透明,直接使用http访问) 7、认证中心回复有效,并返回用户名字,一些其他属性 8、系统...boot之类嵌入式容器,则需要改这里配置,如果是直接部在tomcat中,则需要把tomcat改成https################### #server.ssl.key-store=file...######签发证书,如果是用spring boot之类嵌入式容器,则需要改这里配置,如果是直接部在tomcat中,则需要把tomcat改成https################### spring.http.encoding.charset...boot项目 2、引入CAS客户端依赖 org.springframework.boot <artifactId...urljsessionid处理 如下面链接,当我们从cas登录成功后跳回页面,url后面带上jsessionid,这样看起来很别扭 http://127.0.0.1:10086/index;jsessionid

    1.3K20

    固化Maven依赖嵌入式Servlet容器

    1.2、查看spring-boot-dependencies 部分截图: 在spring-boot-dependencies中锁定大量版本信息 2嵌入式Web容器 2.1嵌入式Web容器概述...Spring Boot 应用直接嵌入Tomcat、JettyUndertow作为其核心特性,可通过指定容器Maven依赖来切换Spring Boot应用嵌入式容器类型,无须代码层面上调整,不同嵌入器存在专属配置属性...2.2、嵌入式Servlet Web容器 Spring Boot支持三种嵌入式Servlet3.1+容器 如表: Name Servlet Version Tomcat8.5 3.1 Jetty 9.4...3.1 Undertow 1.4 3.1 2.2.1、Tomcat 作为嵌入式Servlet Web容器 Spring Boot 2.0 实现是它利用嵌入式Tomcat API 构建为TomcatWebServer...Bean,由Spring 应用上下文将其引导,嵌入式Tomcat组件运行,以及ClassLoader装载均由Spring Boot框架代码实现。

    60010

    Feign HTTP连接几点建议 顶

    Feign之HTTP解压缩 HTTP常见优化项就是数据压缩 Feign可以支持GZip请求解压缩 注意:解压缩是一把双刃剑,一定要谨慎使用 一般我们在外网访问会通过Nginx来进行数据压缩gzip,...,有关HTTPS解释,可以参考HTTP协议整理 HTPP 2.0多路复用HTTP 1.x长连接区别: HTTP 1.0中一次请求响应就建立一次连接,用完关闭,每个请求都要建立一个连接。...有关多路复用技术请参考Netty整理 有关HTTP 2.0更多解释会在HTTP协议整理 中后续增加,它其实就是把HTTP报文头进行了一次传输存储在两端报文表中,只有变更时候才会重发,并且Frame...-keystore rabbittruststore.jks 为Spring Boot项目配置HTTP 2.0 将上面生成私钥证书rabbitkeystore.jks复制到项目的resource目录下...>spring-boot-starter-tomcat <dependency

    7K41

    Spring Boot中使用HTTPS

    在本文中,我们将学习在Spring Boot中使用自签名证书配置SSL(HTTPS),并且要在嵌入式Tomcat上启用Spring Boot应用程序SSL,我们需要学习以下步骤: 1.创建SSL...2.在Spring Boot中启用HTTPS:这可以通过Spring Boot 项目中一些简单配置来完成。 3....将HTTP重定向到HTTPS :在某些情况下,最好也能从HTTP访问你应用,将所有HTTP流量重定向到HTTPS端点。 我们可以使用自己签名证书进行开发测试。...如果我们在类路径中有Spring Security,那么我们应该将 security.require-ssl 属性设置true, 这是为自动阻止来自HTTP任何请求,而不显式触及任何Spring Security...现在,我们可以看到证书已添加到密钥库中消息。现在,应用程序可以同时接受HTTPHTTPS请求。但是所有HTTP呼叫都将被重定向到 HTTPS端点。

    2.7K41

    Spring Boot 集成配置 HTTPS

    这是泥瓦匠第108篇原创 文章工程: JDK 1.8 Maven 3.5.2 Spring Boot 1.5.9.RELEASE 一、HTTPS 是什么 问:什么是HTTP?...答:HTTP是一个客户端和服务器端请求和响应标准TCP协议。 比如打开我博客地址: https://www.bysocket.com 多了个 S,其实 S 表示 TLS、SSL。...Web上,服务器客户端利用HTTP协议进行通信会话。那集成 HTTPS ,简单来说,修改 Tomcat 容器配置,加一层对应安全约束配置即可。...二、申请 HTTPS 2.1 申请SSL证书 2.2 证书文件介绍 在证书控制台下载Tomcat版本证书,下载到本地是一个压缩文件,解压后里面包含.pfx文件是证书文件,pfx_password.txt...本机环境会端口占用可以改成 8080 等 如果一台机器两个 HTTPS 服务,那么可以通过 setRedirectPort 进行操作 参考资料 Spring Boot 2.x 系列:https://www.bysocket.com

    76210

    吊打 Tomcat ,Undertow 性能很炸!!

    1)HTTP/2 Support Undertow 支持 HTTP/2 开箱即用,不需要重写引导类路径。 2)支持 HTTP 升级 支持 HTTP 升级,允许多个协议通过 HTTP 端口上进行复用。...4)支持 Servlet 4.0 Undertow 提供了对 Servlet 4.0 支持,包括对嵌入式 Servlet 支持,还可以混合部署 Servlet 原生 Undertow 非阻塞处理程序...Spring Boot & Undertow 上面讲到,Undertow 是为嵌入式而生 Web 容器,又是 Spring Boot 默认集成容器之一,下面栈长带大家来看下如何在 Spring Boot...因为在 spring-boot-starter-web 启动器中,TomcatSpring Boot 默认嵌入式容器,即:spring-boot-starter-tomcat。...所以,对于学习一般应用来说,Tomcat 足矣,一方面 Tomcat 学习资料多,另一方面 Tomcat更广泛,很多坑别人帮你踩了,很多漏洞也已经暴露出来了。

    2.1K30

    深入浅析Spring-boot-starter常用依赖模块

    Spring-boot2大优点: 1.基于Spring框架“约定优先于配置(COC)”理念以及最佳实践之路。...应用日志spring-boot-starter-logging 常见日志系统大致有:java.util默认提供日志支持,log4j,log4j2,commons logging,下面的spring-boot-starter-logging...嵌入式Web容器层面的约定定制 spring-boot-starter-web默认使用嵌套式Tomcat作为Web容器对外提供HTTP服务,默认端口8080对外监听提供服务。...server.ssl.* server.tomcat.* 如果上诉仍然没有办法满足要求,springBoot支持对嵌入式Web容器实例进行定制,可以通过向IoC容器中注册一个EmbeddedServletContainerCustomizer...提供@Configuration配置类相应配置项,即下面的2个配置项: spring.aop.auto=true spring.aop.proxy-target-class=false 2.spring-boot-starter-aop

    1.7K20

    基于Feign扩展机制实现TLS通信

    改造spring应用为tls模式 我们在使用springboot运行一个应用时候,默认是http模式,但是在生产环境中,一般都要求是https模式 具体做法如下: 1、生成证书(这里只是示例,生产环境需要严格通过...=ts1234 server.ssl.key-store-password=ts1234 #是否强制认证客户端 server.ssl.client-auth=need 对于spring参数文件,我们一般都可以在...IDE中点击该参数,直接就可以跳转到相应代码实现中,从而知道所有的参数情况, 上面对应代码文件为:org\springframework\boot\spring-boot\2.2.4.RELEASE...2、使用schema服务名 @FeignClient(value = "https://ts-product", configuration = TsFeignClientsConfiguration.class...://" + name;这个分支 也就是说,当指定了http或者https时候,就会直接使用指定schema 3、使用url 跟使用value类似,都分为默认http自定义https。

    50420
    领券