nginx 通过 ngx_http_gzip_module、ngx_http_gzip_static_module 等模块进行解析和处理,实现对响应数据和文件缓存的压缩。
# ngx_http_gzip_module模块处理的指令
1.gzip on | off # 开启或关闭压缩功能,其它指令在此基础上生效
2.gzip_buffers number size # 压缩文件使用缓存空间的大小,大小为number*size
3.gzip_comp_level number # 设置gzip压缩程度,1-9级,越大,压缩程度越高,时间越久,一般折中选择
4.gzip_disable regex # 针对特定客户端浏览器标识(UA)开启或者关闭gzip功能
5.gzip_http_version # 浏览器最低版本,一般保持默认即可
6.gzip_min_length length # 最小相应页面大小设置,一般建议1k以上
7.gzip_proxied off|expired|no-cache|no-store... # 作为反向代理时生效,用于设置是否对后端返回的结果进行gzip压缩
8.gzip_types mine-type # 根据响应页的mime类型进行压缩,默认对text/html压缩,可以指定多个。
9.gzip_vary on|off # 用于设置是否发送带有 Vary:accept-encoding头部的响应头,告诉接收方是否经过了压缩
# ngx_http_gzip_static_module模块处理的指令,采用静态压缩功能,默认不启用,需要在编译时手动开启
1.gzip_static on|off|always # 开启或关闭该模块的相关功能
# ngx_http_gunzip_module模块,针对不支持gzip压缩处理的浏览器客户端支持。默认不启用,需要在编译时手动开启
1.gunzip_static on|off # 开启或关闭功能
2.gunzip_buffers number size
# nginx服务器gzip综合配置实例,下述配置一般添加在http块,可以自行根据需要对不同虚拟主机设置开启或关闭某些功能
gzip on; # 开启gzip功能
gzip_min_length 1k; # 响应页数据上限
gzip_buffers 4 16k; # 缓存空间大小
gzip_comp_level 6; # 设置压缩级别为6
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json; # 压缩文件类型
gzip_disable "MSIE [1-6]\."; # IE 1-6关闭gzip压缩
gzip_vary on; # 启用压缩标识
gunzip_static on; # 检查预压缩文件
要想配置生效,记得重启 nginx 服务:
nginx -t
nginx -s reload
Nginx的Gzip压缩功能虽然好用,但是下面 2 类文件资源不太建议启用此压缩功能。
1、图片类型资源 (还有视频文件)
原因:图片如jpg、png文件本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。(可以试试将一张jpg图片压缩为zip,观察大小并没有多大的变化。虽然zip和gzip算法不一样,但是可以看出压缩图片的价值并不大)
2、大文件资源
原因:会消耗大量的cpu资源,且不一定有明显的效果。
相关文章:Apache服务器怎么开启文件压缩