zoukankan      html  css  js  c++  java
  • 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应用访问速度提升一个档次。

  • 相关阅读:
    用 ArcMap 发布 ArcGIS Server Feature Server Feature Access 服务 SQL Server版
    ArcGIS Server Manager 重置密码
    接口自动化过程中遇到的问题?
    接口自动化的闭环?
    每天有80亿的文件需要存储,你会怎么设计存储和检索?
    数据库之索引
    java之高并发锁
    测试环境搭建
    shell基本语法
    RPC和HTTP
  • 原文地址:https://www.cnblogs.com/pass245939319/p/9262860.html
Copyright © 2011-2022 走看看