GX博客

分享个人 Full-Stack JavaScript 项目开发经验

用Nginx作为反向代理服务器压缩数据

Nginx 默认启用的 gzip 模块可以帮助我们将来自上游服务器的响应进行压缩后再传递给客户端,以减少响应的传输时间。


在 http 部分使用压缩配置,使它作用于所有 server。

http {
    include my_gzip.conf;
}

考虑到有些文件类型的压缩效果不好。对于旧版本的 IE 浏览器也不能够响应压缩内容。所以 my_gzip.conf 使用如下配置:

gzip on;

gzip_comp_level 4;

gzip_types text/plain text/css text/javascript text/xml application/xml application/xml+rss application/x-javascript application/javascript application/json;

gzip_min_length 1k;

gzip_buffers 43 4k;

gzip_vary on;

gzip_http_version 1.0;

gzip_disable msie6;

以上使用的 gzip 模块指令说明如下:

指令说明
gzip启用或禁止压缩功能,默认值:off。
gzip_comp_level压缩级别(1~9),默认值:1。压缩级别越高,压缩耗费的时间就越长。一般取值为 4 或 5,可根据实际效果调整。
gzip_min_length在启用压缩之前确定上游服务器的响应长度,由 Content-Length 响应头决定,大于该长度时启用压缩,默认值:20。
gzip_buffers指定用于压缩上游服务器响应的缓冲数量和大小,默认值:32 4k 或 16 8k(平台依赖)。由于博客前台使用的最大 js 文件大小为 168k,故设置为 43 4k 使可以一次压缩整个文件。
gzip_vary如果启用了压缩,该指令控制是否添加 Vary: Accept-Encoding 响应头。设置了该响应头,当客户端不支持服务器的压缩机制时,服务器响应将不会从缓存的压缩版本中提供,而是视为一个新请求。默认值:off。
gzip_http_version指定高于该 HTTP 版本可启用压缩功能,默认值:1.1。
gzip_disable指定一个匹配 User-Agents 的正则表达式,符合的被禁用压缩。特定值 msie6 是 MSIE[4-6]\. 的简写。

有关上面的 gzip_types 中的 MIME 类型说明如下:

类型/子类型资源说明
text/plain普通文本
text/csscss 文本
text/javascriptjavascript 文本(过时)
text/xmlxml 文本
application/xmlxml 二进制数据
application/xml+rssrss xml 二进制数据
application/x-javascript非标准的 javascript 二进制数据(过渡)
application/javascriptjavascript 二进制数据(标准)
application/jsonjson 二进制数据

对于 text/html MIME 类型在 gzip_types 默认是总会包含它,所以我们不需要再显式地声明它。


要了解更多 MIME 类型的介绍,请点击这里

版权声明:

本文为博主原创文章,若需转载,须注明出处,添加原文链接。

https://leeguangxing.cn/blog_post_30.html