• 欢迎来到小爱博客,一个分享互联网IT技术的网站,喜欢就收藏吧!

nginx设置gzip压缩加速web网站

nginx 小爱 3个月前 (07-30) 79次浏览 已收录 0个评论 扫描二维码

一、总结(点击显示或隐藏总结内容)

一句话总结:

真正用的时候,花一小点时间把gzip的各个字段的意思都看一下,会节约大量时间
直接gzip on:在nginx的配置中就可以开启gzip压缩
server{
    gzip on;
    gzip_buffers 32 4K;
    gzip_comp_level 6;
    gzip_min_length 100;
    gzip_types application/javascript text/css text/xml;
    gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
    gzip_vary on;
}

1、nginx中开启gzip实例?

|||-begin

server{
    gzip on;
    gzip_buffers 32 4K;
    gzip_comp_level 6;
    gzip_min_length 100;
    gzip_types application/javascript text/css text/xml;
    gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
    gzip_vary on;
}

|||-end

直接gzip on:在nginx的配置中就可以开启gzip压缩

2、什么样的资源不适合开启gzip压缩?

二进制资源:例如图片/mp3这样的二进制文件,不必压缩;因为压缩率比较小, 比如100->80字节,而且压缩也是耗费CPU资源的.

3、nginx中gzip模块需要额外安装么(看清楚模块名)?

不需要:ngx_http_gzip_module是Nginx默认集成的,不需要重新编译,直接开启即可

4、如何解决:公司的静态资源服务器全部使用的Nginx,且都开启了gzip压缩。内部测试是完全正常的,然而一到外网,居然没有做gzip! ?

原因:做负载均衡的机器上面没开gzip:在应用服务器前,公司还有一层Nginx的集群作为七层负责均衡,在这一层上,是没有开启gzip的。
还需要设置gzip_http_version为1.0:nginx和后端的upstream server之间默认是用HTTP/1.0协议通信的

在应用服务器前,公司还有一层Nginx的集群作为七层负责均衡,在这一层上,是没有开启gzip的。
如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间默认是用HTTP/1.0协议通信的。
如果我们的Cache Server也是nginx,而前端的nginx没有开启gzip。
同时,我们后端的nginx上没有设置gzip_http_version为1.0,那么Cache的url将不会进行gzip压缩。

二、Nginx优化之gzip压缩提升网站速度

转自或参考:Nginx优化之gzip压缩提升网站速度
https://blog.csdn.net/php12345679/article/details/80843939

gzip配置的常用参数

gzip on|off; #是否开启gzip

gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)

gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)

gzip_disable #正则匹配UA 什么样的Uri不进行gzip

gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)

gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)

gzip_proxied # 设置请求者代理服务器,该如何缓存内容

gzip_types text/plain application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css

gzip_vary on|off # 是否传输gzip压缩标志

注意:

图片/mp3这样的二进制文件,不必压缩

因为压缩率比较小, 比如100->80字节,而且压缩也是耗费CPU资源的.

比较小的文件不必压缩,

以下是配置:

在nginx.conf中加入

	gzip on;
	gzip_buffers 32 4K;
	gzip_comp_level 6;
        gzip_min_length 100;
	gzip_types application/javascript text/css text/xml;
        gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
        gzip_vary on;

保存并重启nginx,刷新页面(为了避免缓存,请强制刷新)就能看到效果了

Content-Encoding:gzip 说明开启了gzip压缩

Transfet-Encoding:chunked 说明压缩后分块传输

js的传输大小68.3k,而这个js实际大小为282k 所以压缩生效成功

三、Nginx开启Gzip详解

转自或参考:Nginx开启Gzip详解
https://www.cnblogs.com/caicaizi/p/9488837.html

最近生产上发生了一些问题,原先所有的静态资源文件都是经过gzip压缩的,然而这几天突然都没有压缩了,经过一顿排查,发现是Nginx的配置有问题,借此机会详细了解了Nginx的Gzip配置。

1. Nginx开启Gzip

Nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip,ngx_http_gzip_module是Nginx默认集成的,不需要重新编译,直接开启即可

1.1 配置说明

Nginx开启Gzip的配置如下:

<code class="hljs applescript has-numbering nginx"><span class="hljs-comment"># $gzip_ratio计算请求的压缩率,$body_bytes_sent请求体大小
    <span class="hljs-attribute">log_format</span>  main  <span class="hljs-string">'<span class="hljs-variable">$remote_addr</span> - <span class="hljs-variable">$remote_user</span> [<span class="hljs-variable">$time_local</span>] </span><span class="hljs-string">"<span class="hljs-variable">$host</span>" - "<span class="hljs-variable">$request</span>" '
                    '<span class="hljs-variable">$gzip_ratio</span> - <span class="hljs-variable">$body_bytes_sent</span> - <span class="hljs-variable">$request_time</span>';


    <span class="hljs-attribute">access_log</span>  logs/access.<span class="hljs-command">log  main;

    # 开启gzip
    <span class="hljs-attribute">gzip</span> <span class="hljs-literal">off</span>;

    # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
    <span class="hljs-attribute">gzip_min_length</span> <span class="hljs-number">1k;

    # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
    <span class="hljs-attribute">gzip_comp_level</span> 1;

    # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
    <span class="hljs-attribute">gzip_types</span> <span class="hljs-type">text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;

    # 是否在http header中添加Vary: Accept-Encoding,建议开启
    <span class="hljs-attribute">gzip_vary</span> <span class="hljs-function_start"><span class="hljs-keyword"><span class="hljs-literal">on</span>;

    # 禁用IE 6 gzip
    <span class="hljs-attribute">gzip_disable</span> "MSIE [1-6]\.";

    # 设置压缩所需要的缓冲区大小     
    <span class="hljs-attribute">gzip_buffers</span> 32 4k;

    # 设置gzip压缩针对的HTTP协议版本
    <span class="hljs-attribute">gzip_http_version</span> 1.0;</span></span></span></span></span></span></span></code>

小爱博客 , 版权所有
转载请注明原文链接:nginx设置gzip压缩加速web网站
喜欢 (0)
【你的支持, 我的动力】
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址