使用gzip对文件进行压缩将大大降低带宽的使用。
常用gzip指令。
可在http块、server块、location块中设置。
gzip 用于开启或者关闭gzip模块
gzip on | off
gzip_buffers 设置gzip压缩文件使用缓存空间的大小,其作用是按块大小的倍数申请内存空间
gzip_buffers number size
#eg: gzip_buffers 16 8k
number 指定Nginx服务器需要向系统申请缓存空间的个数
size 指定每个缓存空间的大小
gzip_comp_level 设置gzip压缩等级,等级越低压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大,占用的cpu资源也与压缩等级正相关。
gzip_comp_level level
#eg gzip_comp_level 6
等级范围 1-9
默认级别为 1
gzip_min_length 当返回内容大于此值时才会使用gzip进行压缩,当值为0时,所有页面都进行压缩
gzip_min_length length
#eg: gzip_min_length 100 | 10K
gzip_http_version 用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项,目前此项基本可以忽略
gzip_http_version 1.0 | 1.1
gzip_proxied
Nginx做为反向代理的时候启用,前提是后端服务器返回的响应页头部中,Requests部分包含用于通知代理服务器的Via头域。
gzip_proxied off|expired|no-cache|no-sotre|private|no_last_modified|no_etag|auth|any]
#eg: gzip_proxied any
off – 关闭所有的代理结果数据压缩
expired – 启用压缩,如果header中包含”Expires”头信息
no-cache – 启用压缩,如果header中包含”Cache-Control:no-cache”头信息
no-store – 启用压缩,如果header中包含”Cache-Control:no-store”头信息
private – 启用压缩,如果header中包含”Cache-Control:private”头信息
no_last_modified – 启用压缩,如果header中包含”Last_Modified”头信息
no_etag – 启用压缩,如果header中包含“ETag”头信息
auth – 启用压缩,如果header中包含“Authorization”头信息
any – 无条件压缩所有结果数据
gzip_types
设置需要压缩的MIME类型,非设置值不进行压缩
gzip_types mime-type
#eg: gzip_types application/javascript text/plain application/x-javascript text/css application/xml text/javascript;
对于多数以文本为主的站点来说,文本自身内容占流量的绝大部分。虽然单个文本体积并不算大,但是如果数量众多的话,流量还是相当可观。
gzip_vary
告诉接收方发送的数据经过了压缩处理,开启后的效果是在响应头部添加了Accept-Encoding:gzip,这对于本身不支持gzip压缩的客户端浏览器有用。
gzip_vary on | off
#eg: gzip_vary on
gzip_disable
对于不同类型客户端发起的请求,可选择性开启或者关闭gzip功能。
gzip_disable regex ...;
eg: gzip_disable MSIE [4-6]\.
启动gzip也有可能起到负效果,例如图片本身是经过高度压缩的,所以在对其进行压缩用处不大,并且及其浪费cpu资源。
demo样例
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";