Http2介绍
HTTP/2也被称为HTTP 2.0,相对于HTTP 1.1的新增多路复用、压缩HTTP头、划分请求优先级、服务端推送等特性,解决了在HTTP 1.1中一直存在的问题,优化了请求性能,同时兼容了HTTP 1.1的语义。目前,Chrome、 IE11、Safari和Firefox等浏览器已经支持HTTP/2协议。
HTTP/2的优势
- 二进制协议:相比于HTTP 1.x基于文本的解析,HTTP/2将所有的传输信息分割为更小的消息和帧,并对它们采用二进制格式编码。基于二进制可以使协议有更多的扩展性,例如,引入帧来传输数据和指令。
- 内容安全:HTTP/2基于HTTPS,具有安全特性。使用HTTP/2特性可以避免单纯使用HTTPS引起的性能下降问题。
- 多路复用(MultiPlexing):通过该功能,在一条连接上,您的浏览器可以同时发起无数个请求,并且响应可以同时返回。另外,多路复用中支持了流的优先级(Stream dependencies)设置,允许客户端告知服务器最优资源,可以优先传输。
- Header压缩(Header compression):HTTP请求头带有大量信息,而且每次都要重复发送。HTTP/2采用HPACK格式进行压缩传输,通讯双方各自缓存一份头域索引表,相同的消息头只发送索引号,从而提高效率和速度。
自生成SSL证书
因为Http2基于Https,所以我们需要先配置SSL证书
服务器需要先安装openssl模块
# Ubuntu和Debian
sudo apt install openssl
# Centos和Fedora
sudo yum install openssl
1. 使用OpenSSL工具生成一个RSA私钥
openssl genrsa -des3 -out server.key 2048
输入密码确认生成私钥
说明:生成rsa私钥。des3算法。2048位强度。server.key是密钥文件名。
2. 生成CSR(证书签名请求)
生成私钥之后。便可以创建csr文件了。可使用OpenSSL工具实现自签名。运行以下命令并填写相关信息。
openssl req -new -key server.key -out server.csr
在命令行中。按照提示信息依次输入国家。地区。城市。组织。组织单位。Common Name和Email。其中Common Name。可以写自己的名字或者域名。如果要支持https。Common Name应该与域名保持一致。否则会引起浏览器警告。
3. 生成自签名证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
nginx配置
nginx需要安装 http_ssl_module 模块,可通过nginx -V
查看已安装模块信息,建议使用yum安装nginx,这种方式会默认安装所有模块
server {
listen 8070 ssl http2;
ssl_certificate /etc/nginx/ssl/server.crt; # server公钥证书的路径
ssl_certificate_key /etc/nginx/ssl/server.key; # server私钥的路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
...
#添加前端与后台的映射
...
}
效果如图