【nginx】 配置 gzip 模块
在使用 nginx 的时候,配置 gzip 模块,可以让服务器的伺服更加高效,对于文本类型的数据,传输量可以压缩一半左右。
官方建议我们创建一个叫 conf.d 的文件夹,使用 include 语句,将 gzip 的配置文件插入到 http 区段。
1 | # 打开gzip 功能 |
gzip 模块,有好几个指令,特意重温了一下,记录下来跟大家分享。gzip_disable
是为了兼容老旧的浏览器的,现如今应该没什么用了,但是如果考虑到广泛伺服的公众服务,可以配置上这个,文档中描述,这个指令接受的是一个 pattern,而 “msie6” 是一个内置 pattern,会被自动翻译成对应于微软老旧浏览器的 pattern,但是比直接写目标 pattern 的效率高一点。
gzip_type 指定了要压缩的资源类型,默认的情况下,只有 text/html 会被压缩。值得注意的是,在配置这个指令的时候,不需要再次写入 “text/html” 这个值,因为这个 MIME 类型,是必然会被压缩的,如果你写上了,语法检查,会报一个 warning。这里,我还遇到了其他几个知识点,比如 “text/javascript” 和 “application/x-javascript” 这两个 MIME 类型到底要不要放进去呢?我特意检查了一个官方默认的配置文件 mime.types ,里面是没有前述的两个 MIME 的。SO 查了一下,“text/javascript” 是不规范的写法,已经弃用了(deprecated),而 “application/x-application” 是一种实验期的写法,x- 代表实验(experimental),一直坚持用到标准落地,而现如今,其实标准已经落地了,正确的写法就是一个 “application/javascript”。
gzip_min_length 是一个启动模块的阈值,根据 Content-Length 来判定。虽然压缩可以大幅度节省流量,但是显然,这个操作会浪费 CPU,所以,如果文件太小,启动一次压缩,就不合算了。默认这个指令是 20 字节,官网推荐的是设置为 1000。
最后一个指令,是针对代理的,默认情况下,nginx 不会对代理的内容进行压缩。但是官网认为,针对代理的内容也是应该压缩的。但是要小心应对。我贴的几个选项也是官网推荐的用法。