默认情况下,Nginx的gzip压缩是关闭的


同时,Nginx默认只对text/html进行压缩


所以,开启gzip的指令如下:



折叠复制代码




  1. gzip on;

  2. gzip_http_version 1.0;

  3. gzip_disable "MSIE [1-6].";

  4. gzip_types text/plain application/x-javascript text/css text/javascript;




注意:


1. 其中的gzip_http_version的设置,它的默认值是1.1,就是说对HTTP/1.1协议的请求才会进行gzip压缩


如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间是用HTTP/1.0协议通信的



This module makes it possible to transfer requests to another server.


It is an HTTP/1.0 proxy without the ability for keep-alive requests yet. (As a result, backend connections are created and destroyed on every request.) Nginx talks HTTP/1.1 to the browser and HTTP/1.0 to the backend server. As such it handles keep-alive to the browser.



如果我们使用nginx通过反向代理做Cache Server,而且前端的nginx没有开启gzip


同时,我们后端的nginx上没有设置gzip_http_version为1.0,那么Cache的url将不会进行gzip压缩


 


2. gzip_disable的设置是禁用IE6的gzip压缩,又是因为杯具的IE6


IE6的某些版本对gzip的压缩支持很不好会造成页面的假死,今天产品的同学就测试出了这个问题


后来调试后,发现是对img进行gzip后造成IE6的假死,把对img的gzip压缩去掉后就正常了


为了确保其它的IE6版本不出问题,所以就加上了gzip_disable的设置