一,为什么nginx要使用gzip

1,压缩的作用:

页面使用gzip压缩之后,

页面大小可以压缩到原来的1/7左右,

传输速度和页面打开时间都可以大幅度提高,

有利于用户访问页面体验的提升

2,Nginx实现gzip压缩的原理:

通过ngx_http_gzip_module模块拦截请求,

并对需要做gzip的类型做gzip压缩

3,   ngx_http_gzip_module是Nginx默认集成的,

      不需要重新编译,直接开启即可

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,gzip模块使用例子:

    gzip on;
gzip_min_length 1k;
gzip_disable "MSIE [1-6]\.";
gzip_comp_level 5;
gzip_types text/css text/javascript text/xml text/plain application/json application/javascript application/x-javascript application/xml application/xml+rss;
gzip_http_version 1.1;

各个指令的说明:

gzip on;

开启gzip模式,

默认值是off,就是不启用gzip压缩功能

当然是要把它设置为on了

gzip_min_length 1k;

设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。

太小的文件内容压缩之后效果不明显,甚至会比不压缩时更大。

默认值是20,这个值过小,

一般设置为长度不小于1k

gzip_disable

IE6对Gzip支持效果较差,所以针对它不启用

gzip_comp_level : 

gzip 压缩级别,1-9,

数字越大压缩的比例越高,但也越占用CPU时间

它的默认值是1,通常会设置为5或6

如果cpu占用高,设置为2或3也可以

gzip_http_version :

设置gzip压缩所支持的最小HTTP版本,

如果低于该版本不使用gzip压缩。

默认值是1.1

一般使用1.1。

gzip_types :

针对哪些类型的页面才启用gzip压缩,有多个值则用空格分隔。

通配符*可以匹配任意类型,但不要用这个值。

只有js/css/html/text这几类内容压缩才有明显的效果,

图片和视频等本身经过压缩算法处理过的文件启用压缩也没有明显效果。

1,不管是否指定text/html类型,该类型的响应总是启用压缩,

所以这个值可以不用写上

2,这些文件类型对应的mime-type可以参考nginx/conf/mime.types文件

3,常用的9个值:

text/css text/javascript text/xml text/plain

application/json application/javascript application/x-javascript

application/xml application/xml+rss

三,例子中未用到的其他设置项:

gzip_buffers 4 16k;

gzip_vary on;

gzip_proxied any;

gzip_vary:

vary header支持,

on的话会在Header里增加"Vary: Accept-Encoding"

这个值可以让前端的缓存服务器缓存经过GZIP压缩的页面,

例如用Squid缓存经过nginx压缩的数据

如果在nginx前端使用了squid或varnish,

可以设置此值为on

gzip_proxied    

nginx 做前端代理时启用该选项,

如果值是 any, 表示无论后端服务器的headers头返回什么信息,

都无条件启用压缩

如果用了nginx作反向代理,

设置此值为any

gzip_buffers:

设置用于处理压缩的缓冲区大小。

默认值:32 4k|16 8k

32 4k代表以4k为单位将响应数据以4k的32倍(128k)的大小申请内存。

建议此项不设置,使用默认值

四,查看gzip的压缩效果

1,使用curl查看

#-I, --head          Show document info only   只显示头信息

#-H,--header LINE:   Pass custom header LINE to server (H)   自定义请求头的信息

[root@localhost curl]# curl -I -H "Accept-Encoding: gzip, deflate" http://www.lhdtest.net
HTTP/1.1 200 OK
Server: openresty
Date: Mon, 27 Apr 2020 07:59:38 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: SESSID_WEB=0ks2eh03vmv4dhje29ggojl1bs; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Encoding: gzip

说明:看到Conten_Encoding: gzip则表示gzip压缩已生效

2,通过浏览器查看效果

从浏览器端响应头信息看gzip是否生效:

看截图:压缩前和压缩后的效果对比:

压缩前:

压缩后:

说明:我使用的是firefox的web控制台,大家也可用yslow之类的插件试试

五,查看nginx的版本:

[root@centos8 soft]# /usr/local/soft/nginx-1.18.0/sbin/nginx -v
nginx version: nginx/1.18.0

nginx优化:配置gzip压缩页面提高访问速度(nginx1.18.0)的更多相关文章

  1. Nginx性能优化功能- Gzip压缩(大幅度提高页面加载速度)

    Nginx开启Gzip压缩功能, 可以使网站的css.js .xml.html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能!  Web网站上的图片,视频等其它多媒体文件以及大文件,因 ...

  2. nginx安全:配置allow/deny控制ip访问(ngx_http_access_module)

    一,nginx中allow/deny指令的用途 1, Nginx的deny和allow指令是由ngx_http_access_module模块提供, Nginx安装默认内置了该模块 2, nginx访 ...

  3. nginx安全:修改对外的服务软件名称并隐藏版本号(nginx1.18.0)

    一,为什么要隐藏nginx真实的软件名称? 1,nginx响应的Server头部都会携带上服务软件的名字和版本信息, 服务器软件的版本信息暴光在外部,很容易被黑客了解到,就通过相应版本的漏洞来攻击服务 ...

  4. Nginx 核心配置-自定义错误页面

    Nginx 核心配置-自定义错误页面 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 生产环境中错误页面一般都是UI或开发工程师提供的,他们已经在软件中定义好了,我们这里就简单写个h ...

  5. IIS7配置Gzip压缩 JS压强失败的原因

    开启配置HTTP压缩(GZip) 在IIS7中配置Gzip压缩相比IIS6来说实在容易了许多,而且默认情况下就是启用GZip压缩的.如果没有,则可以再功能视图下找到“压缩”项,进入之后就会看到“静态内 ...

  6. Ubuntu Nginx下配置网站ssl实现https访问

    最近在看  HTTP权威指南   看到介绍了HTTPS的ssl,自己就动手测试了下,将步骤记录下 HTTPS简介 什么是HTTPS?百科是这样解释的.HTTPS(全称:Hyper Text Trans ...

  7. IIS7.5配置Gzip压缩解决方案(转)

    开启配置HTTP压缩(GZip) 在IIS7中配置Gzip压缩相比IIS6来说实在容易了许多,而且默认情况下就是启用GZip压缩的.如果没有,则可以再功能视图下找到“压缩”项,进入之后就会看到“静态内 ...

  8. [转帖]IIS7配置Gzip压缩

    IIS7配置Gzip压缩 https://www.cnblogs.com/coce/p/6804373.html   II7中自带了gzip功能,理论上应该比ii6配置起来应该简单一点,但是容易出的问 ...

  9. nginx集群:nginx配置负载均衡集群(nginx1.18.0)

    一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...

随机推荐

  1. spring5源码 -- IOC容器设计理念和核心注解的作用

    一. spring源码整体脉络介绍及源码编译 二. Spring IOC的源码深入学习 2.1 ioc容器的加载过程(重要) 2.2 bean的生命周期源码深度剖析 2.3 循环依赖总结讲解 2.4 ...

  2. sql注入--bool盲注,时间盲注

    盲注定义: 有时目标存在注入,但在页面上没有任何回显,此时,我们需要利用一些方法进行判断或者尝试得到数据,这个过程称之为盲注. 布尔盲注: 布尔盲注只有true跟false,也就是说它根据你的注入信息 ...

  3. Tomcat http转https

    1.先申请ssl   腾讯  阿里都有免费的一年的 2.修改tomcat  conf文件夹的service.xml文件 <!-- 将所有的8443  改为443 --> <Conne ...

  4. turtle空间坐标系

    利用空间坐标改变行进 以海龟的角度来看,无论往那个方向运行,都叫正方向 turtle.fd向海龟的正前方运行,turtle.bk向反方向运行

  5. 为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?

    GitHub 17k Star 的Java工程师成神之路,不来了解一下吗! GitHub 17k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 17k Star 的Java工 ...

  6. HTML自学第一篇

    教程来自W3CSchool 因为笔者有过开发经验 本篇只是个人对HTML自学的笔记,可能不适合用于给他人理解和学习 什么是 HTML HTML 指的是超文本标记语言 (Hyper Text Marku ...

  7. Oracle添加键值对盲注

    前言 遇到一种注入点,存在于POST参数中,却不能用sqlmap扫出: 分析 request参数格式: %24Q_value1=test1&orderCol=&order=+ASC+& ...

  8. 转载:pycharm IDE 导入自定义模块

    http://www.mamicode.com/info-detail-2241193.html

  9. 在Linux系统下搭建和配置一个minio文件服务器(一)

    1.minio文件服务器的介绍 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日 ...

  10. three.js学习5_渲染器

    THREE.WebGLRenderer WebGL Render 用WebGL渲染出你精心制作的场景 介绍 在之前的介绍中, 已经介绍过场景, 相机, 光源, 有了这些后, 就可以形成一个可观的三维展 ...