Web服务器大多是支持直接发送GZip文件的。本文算是Rails中使用压缩的静态缓存的姊妹篇,谈谈在nginx中,进行适当配置使nginx直接发送压缩文件到浏览器。
配置起来非常容易。大致如下(实际情况可能更为复杂):
location / { set $gzip_suffix ".gz"; if (-f $request_filename$gzip_suffix) { add_header Content-Type "text/html"; add_header Content-Encoding gzip; gzip off; rewrite (.*) $1.html$gzip_suffix break; } }
在上面这段配置中,先判断是否有xxx.gz文件存在,若有,则进入相应分支。在这个分支中,使用了两个add_header,会在响应头信息中增加相应的字段,以使客户端了解这是经过压缩的内容。若没有Content-Type ‘text/html’,打开页面时浏览器会弹出一个下载提示;若没有Content-Encoding gzip,打开只能看到一堆乱码。下面的 gzip off 则告诉nginx,不必再对这部分内容做压缩。
这样,就可以使nginx支持直接发送GZip压缩后的内容了,而且在浏览器中打开和普通html没有任何区别。但这种配置方式还遗留了一个问题,就是任何gz文件都被作为text/html而发送了。也许有这种需要:请求xxx.xml就将Content-Type设置为text/xml;请求xxx.css就将Content-Type设置为text/css。这当然有办法满足,不过我把这问题留给诸位,可以参考下这篇老文:在nginx中使用多个条件进行rewrite,相信可以助你秒杀这种需求。
此外,推荐一下RackspaceCloud。如果手头没有linux而且不方便拿服务器上的nginx做实验,可以在RackspaceCloud新建个服务器玩儿,搞完删掉就好了,既方便又干净。
评论加载中...
|
Copyright@ 2011-2017 版权所有:大连仟亿科技有限公司 辽ICP备11013762-1号 google网站地图 百度网站地图 网站地图
公司地址:大连市沙河口区中山路692号辰熙星海国际2215 客服电话:0411-39943997 QQ:2088827823 42286563
法律声明:未经许可,任何模仿本站模板、转载本站内容等行为者,本站保留追究其法律责任的权利! 隐私权政策声明