Nginx 笔记与总结(13)Nginx 的 gzip 压缩

摘要:
建议6gzip_禁用常规匹配。

使用 FireFox(40.0)访问博客园(http://www.cnblogs.com/),观察 http 头信息

请求头信息:

Nginx 笔记与总结(13)Nginx 的 gzip 压缩第1张

Accept-Encoding gzip, deflate 表示浏览器接受的压缩方式有 gzip 和 deflate

响应头信息:

Nginx 笔记与总结(13)Nginx 的 gzip 压缩第2张

Content-Encoding gzip 表示服务器返回内容的压缩方式是 gzip

注意:图片/mp3 这样的二进制文件不必压缩,因为压缩比较小(而且压缩需要消耗 CPU 资源)

在 nginx 下使用 gzip

nginx gzip 相关语法见:http://nginx.org/en/docs/http/ngx_http_gzip_module.html

gzip 配置的常见参数:

gzip on|off是否开启 gzip
gzip_buffers 32 4k|16 8k缓冲(压缩在内存中缓冲几块(32,16),每块的大小(4k,8k))
gzip_comp_level [1-9]压缩级别(级别越高,压得越小,同时越消耗 CPU 计算资源)。推荐 6
gzip_disable正则匹配。哪些 URI 不进行 gzip 压缩
gzip_min_length 200开始压缩的最小长度(单位字节),小于该长度就不压缩
gzip_http_version 1.0|1.1开始压缩的 http 版本协议(可以不设置,默认 1.1)
gzip_proxied设置请求代理服务器如何缓存
gzip_types text/plain application/xml对哪些类型的文件使用压缩,如 html(默认)、xml、css、js
gzip_vary on|off是否传输 gzip 压缩标志

其中 gzip_type 的参数要使用文件 MIME 类型,可以在 /usr/local/nginx/conf/mime.type 文件中查看

Nginx 笔记与总结(13)Nginx 的 gzip 压缩第3张Nginx 笔记与总结(13)Nginx 的 gzip 压缩第4张
[root@localhost nginx]# cat conf/mime.types

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/javascript                js;
    application/atom+xml                  atom;
    application/rss+xml                   rss;

    text/mathml                           mml;
    text/plain                            txt;
    text/vnd.sun.j2me.app-descriptor      jad;
    text/vnd.wap.wml                      wml;
    text/x-component                      htc;

    image/png                             png;
    image/tiff                            tif tiff;
    image/vnd.wap.wbmp                    wbmp;
    image/x-icon                          ico;
    image/x-jng                           jng;
    image/x-ms-bmp                        bmp;
    image/svg+xml                         svg svgz;
    image/webp                            webp;

    application/font-woff                 woff;
    application/java-archive              jar war ear;
    application/json                      json;
    application/mac-binhex40              hqx;
    application/msword                    doc;
    application/pdf                       pdf;
    application/postscript                ps eps ai;
    application/rtf                       rtf;
    application/vnd.apple.mpegurl         m3u8;
    application/vnd.ms-excel              xls;
    application/vnd.ms-fontobject         eot;
    application/vnd.ms-powerpoint         ppt;
    application/vnd.wap.wmlc              wmlc;
    application/vnd.google-earth.kml+xml  kml;
    application/vnd.google-earth.kmz      kmz;
    application/x-7z-compressed           7z;
    application/x-cocoa                   cco;
    application/x-java-archive-diff       jardiff;
    application/x-java-jnlp-file          jnlp;
    application/x-makeself                run;
    application/x-perl                    pl pm;
    application/x-pilot                   prc pdb;
    application/x-rar-compressed          rar;
    application/x-redhat-package-manager  rpm;
    application/x-sea                     sea;
    application/x-shockwave-flash         swf;
    application/x-stuffit                 sit;
    application/x-tcl                     tcl tk;
    application/x-x509-ca-cert            der pem crt;
    application/x-xpinstall               xpi;
    application/xhtml+xml                 xhtml;
    application/xspf+xml                  xspf;
    application/zip                       zip;

    application/octet-stream              bin exe dll;
    application/octet-stream              deb;
    application/octet-stream              dmg;
    application/octet-stream              iso img;
    application/octet-stream              msi msp msm;

    application/vnd.openxmlformats-officedocument.wordprocessingml.document    docx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet          xlsx;
    application/vnd.openxmlformats-officedocument.presentationml.presentation  pptx;

    audio/midi                            mid midi kar;
    audio/mpeg                            mp3;
    audio/ogg                             ogg;
    audio/x-m4a                           m4a;
    audio/x-realaudio                     ra;

    video/3gpp                            3gpp 3gp;
    video/mp2t                            ts;
    video/mp4                             mp4;
    video/mpeg                            mpeg mpg;
    video/quicktime                       mov;
    video/webm                            webm;
    video/x-flv                           flv;
    video/x-m4v                           m4v;
    video/x-mng                           mng;
    video/x-ms-asf                        asx asf;
    video/x-ms-wmv                        wmv;
    video/x-msvideo                       avi;
}
mime.types

在 /usr/local/nginx/conf/nginx.conf 中开始配置:

[root@localhost nginx]# vim conf/nginx.conf

gzip 的上下文(context)可以是 http、server、location、if in location

如果针对针对整个网站发挥作用,就在 server 段中进行配置:

    server {
        listen       80;
        server_name  localhost;

        #gzip 
        gzip on;
        gzip_buffers 32 4k;
        gzip_comp_level 6;
        gzip_min_length 200;
        gzip_types text/css text/xml application/x-javascript;

平滑重启 nginx。

此时访问服务器上 ecshop 项目的某个 URL,观察 http 响应头:

Nginx 笔记与总结(13)Nginx 的 gzip 压缩第5张

由于是分块传输,因此看不到 Content-Length。

此时再访问一个内容较小的页面(内容长度小于 200 字节),观察 http 响应头:

Nginx 笔记与总结(13)Nginx 的 gzip 压缩第6张

此时内容没有被 gzip 压缩。

在项目中 gzip_min_length 可设置较大值,如 4000(4k)。

免责声明:文章转载自《Nginx 笔记与总结(13)Nginx 的 gzip 压缩》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇主流服务器虚拟化技术简单使用——Xen(二)centos 20T硬盘(超过16T)分区下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前后端分离实践(一)

前言 最近这一段时间由于Nodejs的逐渐成熟和日趋稳定,越来越多的公司中的前端团队开始尝试使用Nodejs来练一下手,尝一尝鲜。 一般的做法都是将原本属于后端的一部分相对于业务不是很重要的功能迁移到Nodejs上面来,也有一些公司将NodeJS作为前后端分离的一个解决方案去施行。而像淘宝网这类的大型网站也很早的完成了前后端的分离,给我们这样的后来者提供了...

ubuntu上安装nginx+mysql+php5-fpm(PHP5

题外话:由于近段时间测试环境ssh链路质量不大好,经常短线。故我把整个安装过程放到screen里去执行,以防止断线中断了安装过程。执行screen -S install,这样断线后,只要再执行screen -r install 就可以恢复之前的安装界面。 1.安装mysql sudo apt-get install mysql-server mysql-c...

nginx创建本地服务器和配置代理(解决跨域)

1,下载nginx 2,解压后打开conf/nginx.conf 修改配置 server { listen 8841;#监听端口 server_name localhost;#代理服务地址 location /{ #默认访问 root htm...

ubuntu下发布asp.net core并用nginx代理之旅(续)

前面实现了ubuntu下的发布,然而实际项目一般为visual studio中发布文件系统,然后上传至生产环境中,(部分参考:上传文件到linux - ubuntu) 这节就发布到生产环境中的: 1.首先,在生产环境中搭建ftp服务端,方便我们上传文件至服务端中,以vsftpd为例: 首先安装vsftpd (不得不说ubuntu的apt-get用起来确实方...

K8S(二)-创建一个pod应用

 Pod是可以创建和管理Kubernetes计算的最小可部署单元。pod可以理解为容器的外壳,给容器做了一层抽象封装。一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。 一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),这多个容器间共享IPC、Network和UTC,和存储卷,存储卷不再属于容器,而属于pod。 Pod分...

自定义Struts2实现

一:struts2运行机制: Tomcat一启动,一些信息就已经加载完成,例如StrutsPrepareAndExecuteFilter加载的那些strut.xml以及Action的class类文件 1)客户端在浏览器中输入一个url地址,例如http://localhost:8080/user!findUser.do。2)这个url请求通过http协议发...