nginx配置启用http2

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,这种方式会默认安装所有模块

nginx配置启用http2_第1张图片

    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;
     
     ...
     #添加前端与后台的映射
     ...
     
	}

效果如图

在这里插入图片描述
在这里插入图片描述

你可能感兴趣的:(问题解决专栏,nginx,https,运维)