gzip是一种压缩技术,通过gzip对网页进行压缩,可以削减网页的大小,让用户浏览网页的速度得到提高(需要服务器进行压缩,浏览器进行解压),当然,启用gzip压缩技术会占用nginx服务器的cpu资源,可能会导致nginx同时处理请求的响应能力下降,需要根据实际情况判断是否开启此项功能。下面记录下该网页压缩技术在nginx中的应用:
1、gzip模块相关配置指令
指令 | 说明 |
---|---|
gzip | 用于开启或关闭gzip模块 |
gzip_buffers | 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流 |
gzip_comp_level | gzip压缩比,级别为1~9,压缩级别越高压缩率越大,压缩时间越长 |
gzip_disable | 指定User-Agent,对该User-Agent不使用压缩功能 |
gzip_min_length | 设置允许压缩的页面最小字节数(Content-Length) |
gzip_http_version | 识别http协议版本,默认1.1 |
gzip_proxied | 启用或者禁用从代理服务器上收到响应内容的gzip压缩功能 |
gzip_types | 匹配MIME类型进行压缩(无论是否指定,text/html总是会被压缩) |
gzip_vary | 用于在响应消息头中添加vary:Accept_Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩 |
下面修改nginx.conf的http配置块,开启gzip压缩:
http {
...
gzip on;
gzip_comp_level 4;
#IE6下开启压缩会导致页面假死,这里不启用
gzip_disable "MSIE [1-6].";
...
}
修改后平滑重启,访问nginx服务器,可以看到下面的下面的响应头,即正确开启了压缩:
2、gzip_proxied常用参数
指令 | 说明 |
---|---|
any | 无条件压缩所有数据 |
off | 关闭反向代理的压缩 |
expired | 如果响应消息头中含Expired,启用压缩 |
no-cache | 如果响应消息头中含Cache-Control:no-cache,启用压缩 |
no-store | 如果响应消息头中含Cache-Control:no-store,启用压缩 |
private | 如果响应消息头中含Cache-Control:private,启用压缩 |
auth | 如果响应消息头中含Authorization头信息,启用压缩 |
no_last_modified | 如果响应消息头不含Last-Modified,启用压缩 |
no_etag | 如果响应消息头不含ETag,启用压缩 |