Nginx开启http2访问和gzip网页压缩功能

enter image description here

准备工作

  如果Nginx要开启http2需要满足以下2个条件:

  • nginx >=1.9.5
  • openSSL >= 1.0.2
    所以这里我们首先要检查Nginx的版本如果没有安装要先安装Nginx
##更新源
sudo apt-get update
##安装nginx
sudo apt-get install nginx
##查看Nginx版本
nginx -v

如果上面的当前服务器上的nginx版本大于1.9.5。说明可以完美的支持http2。如果小于1.9.5请先升级,nginx官网 .这里提示一下Ubuntu 16.04.1版本默认安装的nginx版本是1.10.3可以完美支持http2。

修改配置文件开启http2

  由于http2需要ssl证书的支持。我们可以申请免费的ssl证书。可以参考我之前的文章免费ssl证书申请

##编辑配置文件
vi /etc/nginx/sites-enabled/default 

新增以下配置

 server {
            listen 443 http2;#注意这个里的http2
            server_name test.com;#替换自己的域名
            root html;
            index index.html index.htm;
            ssl on;
            ssl_certificate /home/ubuntu/ssl/test.crt;#替换自己的证书
            ssl_certificate_key /home/ubuntu/ssl/test.com.key;#替换自己的证书
            ssl_session_timeout 5m;
            ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
            ssl_prefer_server_ciphers on;
            location / {
                    try_files $uri $uri/ =404;
            } }

记得自己修然server_name和对应证书位置。然后保存

##重新加载配置文件
sudo nginx -s reload

也可以增加以下配置, 让所有http请求自动跳转到https

server {  
    listen  80;  
    server_name test.com;  
    rewrite ^(.*)$  https://$host$1 permanent;  
}  

然后使用chrome先打开自己网站。然后输入chrome://net-internals/#http2
如果列表上面有显示你的网站说明http2已经开启。
enter image description here

开启gzip压缩功能

##编辑配置文件
vi /etc/nginx/nginx.conf 

这个时候你会看到以下配置
enter image description here
我们主要把图中红框部分注释放开就可以了。下面是配置

        gzip on;#是否开启gzip
        gzip_disable "msie6";#(IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库
        gzip_vary on;#启用应答头"Vary: Accept-Encoding"
        gzip_proxied any;
        gzip_comp_level 6;# gzip压缩比/压缩级别,压缩级别 1-9,级别越高压缩率越大,当然压缩时间也就越长(传输快但比较消耗cpu)。
        gzip_buffers 16 8k;# 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。 例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。
        gzip_http_version 1.1;#识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;#匹配压缩类型


重启之后验证

##后面地址可以换成具体的资源
curl -I -H "Accept-Encoding: gzip, deflate" "https://sheeplovewolf.com/"
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 04 Jul 2018 05:01:47 GMT
Content-Type: text/html
Last-Modified: Tue, 31 Jan 2017 15:01:11 GMT
Connection: keep-alive
ETag: W/"5890a6b7-264"
Content-Encoding: gzip

如果返回Content-Encoding: gzip说明gzip已经开始。到此服务已经开起了http2和gzip。这样可以让你web应用访问速度提升一个档次。

posted @ 2018-07-04 13:40  进击的小羊驼  阅读(1886)  评论(0编辑  收藏  举报