[完整] SpringBoot开启Http2

1. 什么是Http2.0

HTTP/2.0,通常简称为HTTP/2,是一种用于传输超文本(例如网页和资源文件)的网络协议。它是HTTP/1.1的继任者,旨在提高性能和效率,以适应现代Web应用的需求。HTTP/2的主要特点包括以下几点:

  1. 多路复用(Multiplexing):HTTP/2允许多个请求和响应同时在单个连接上传输,而不像HTTP/1.1一样需要建立多个连接。这消除了HTTP/1.1中的队头堵塞问题,提高了性能和响应速度。
  2. 头部压缩(Header Compression):HTTP/2使用HPACK算法对HTTP头部进行压缩,减少了头部传输的数据量,从而降低了带宽消耗和加载时间。
  3. 二进制传输(Binary Protocol):HTTP/2使用二进制协议来传输数据,而不是HTTP/1.1中的文本协议。这使得数据传输更加高效,减少了解析复杂性。
  4. 服务器推送(Server Push):HTTP/2允许服务器在客户端请求一个资源时主动推送相关资源,从而减少了客户端的等待时间和请求次数,提高了性能。
  5. 流量控制(Flow Control):HTTP/2引入了更精细的流量控制机制,允许客户端和服务器更好地管理数据流量,防止过载。
  6. 请求优先级(Priority):HTTP/2支持请求优先级,允许指定哪些请求应该优先处理,以提高用户体验。

2. 代码实战

2.1 生成证书

java内置keytool可以生成自签名证书,使用keytool之前需要确保你配置了JAVA_HOME或者你在keytool目录下运行该命令,并输入两次密码。

keytool -genkey -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -dname "CN=li, OU=zelin, O=zelin, L=bj, ST=bj, C=CN"

运行该命令后会在当前路径生成一个keystore.p12证书文件,将该文件放进SpringBoot项目中的resources目录下。

2.2 配置项目

application.properties中配置以下选项。

# 配置http2
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-password=替换成你输入的密码
server.ssl.key-store-password=替换成你输入的密码
server.http2.enabled=true

3. 验证是否使用HTTP2

打开浏览器的F12开发控制台,

查看请求标头是否使用HTTP2

4. 扩展

由于项目使用HTTP2,默认只能使用HTTPS进行访问,所以需要配置HTTP的流量转发到HTTPS的端口。

建议使用NGINX进行配置,不要在项目进行硬性配置。以下是一个NGINX的配置示例

server {
    listen 80;
    server_name your_domain.com;

    # 重定向所有HTTP请求到HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain.com;

    # 指定SSL证书和密钥文件的路径
    ssl_certificate /path/to/your_ssl_certificate.crt;
    ssl_certificate_key /path/to/your_ssl_certificate_key.key;

    # 添加其他SSL配置选项,如SSL协议版本和密码套件

    # 在这里配置您的HTTPS服务器块
    # 例如:
    location / {
        # 配置您的应用程序或代理设置
    }
}

热门相关:总裁的秘密爱人   重生之嫡女祸妃   悠哉兽世:种种田,生生崽   一等狂妃:邪王,请接招!   上将大叔,狼来了!