nginx 反向代理,网页访问慢的解决方法,启用gzip
最近,使用Nginx做反向代理时,访问网页时,非常的慢,为了解决这个问题,分析原因,发现有个gzip,一直关着的,于是查了查,试了试,发现,16M被压缩为4M多,首页1秒内就能加载完成,现将该配置分项一下。
参数介绍
gzip on; 开启gzip off关闭
gzip_min_length 1k; 设置允许压缩的页面最小字节(从header头的Content-Length中获取) 建议大于1k
gzip_buffers 4 16k; 以16k为单位,按照原始数据大小以16k为单位的4倍申请内存
gzip_http_version 1.1; 识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
gzip_comp_level 2; 等级1-9 最小的压缩最快 但是消耗cpu
gzip_types text/plain application/x-javascript text/css application/xml; 匹配压缩类型
gzip_vary on; 启用应答头"Vary: Accept-Encoding"
gzip_proxied off;
nginx做为反向代理时启用,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_modefied(启用压缩,header头中不包含"Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息)
gzip_disable msie6; (IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库
gzip 决定是否开启gzip模块
gzip_buffers 设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间,param2:int(k) 后面单位是k
eg:gzip_buffers 4 8k;
gzip_comp_level 设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大
gzip_min_length 当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩
gzip_types 设置需要压缩的MIME类型,非设置值不进行压缩
param:text/html|application/x-javascript|text/css|application/xml
对于多数以文本为主的站点来说,文本自身内容占流量的绝大部分。虽然单个文本体积并不算大,但是如果数量众多的话,流量还是相当可观。启用GZIP以后,可以大幅度减少所需的流量。
配置详解
#开启Gzip gzip on; #不压缩临界值,大于100K的才压缩,这个按需改,压缩要消耗cpu资源 gzip_min_length 100k; #压缩在内存中缓冲几块? 每块多大? gzip_buffers 4 16k; #默认是HTTP/1.1,用了反向代理的话,末端通信是HTTP/1.0 gzip_http_version 1.0; #压缩级别,1-10,数字越大压缩的越好,时间也越长 gzip_comp_level 2; #进行压缩的文件类型 image/jpeg image/gif image/png 图片建议不压缩, gzip_types text/plain application/javascript text/cssapplication/xml application/x-javascript text/css application/xml text/javascript application/x-httpd-php; #on 的话会在Header里增加"Vary: Accept-Encoding" gzip_vary on; #IE6对Gzip不怎么友好,不给它Gzip了 gzip_disable "MSIE [1-6]\.";