# Nginx教程 - 6 gzip压缩配置
什么是gzip压缩?
在Nginx中,gzip 压缩是一种优化网站性能的技术。配置 gzip 压缩后,Nginx服务器在将内容发送给客户端之前,先将内容进行压缩。客户端(如浏览器)在接收到压缩后的内容后,会对其进行解压缩并显示。
gzip压缩有什么好处?
通过配置 gzip 压缩,可以减少带宽的使用,减少服务器到客户端传输的数据量,客户端可以提高页面加载的速度,提升用户体验。二服务器可以更快的处理请求,从而减轻服务器的负载,提高服务的响应速度和吞吐量。
但是也需要注意,虽然 gzip 压缩可以提高性能,但也会增加服务器的CPU负担(因为需要进行压缩操作)。因此,在配置gzip压缩时,需要权衡性能和资源使用之间的平衡。
# 6.1 开启gzip压缩
哪个站点需要开启 gzip 压缩,将如下内容配置到其对应的 server 模块下面即可:
server {
# ...其他配置
# 开启gzip压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1k; # 文件大于1k才压缩
gzip_comp_level 6; # 压缩级别,1-9,数字越大压缩率越高但消耗的CPU资源越多
gzip_vary on; # 在响应头中添加Vary: Accept-Encoding,允许客户端缓存不同版本的内容
gzip_disable "MSIE [1-7]\."; # 禁用对IE 1到7版本的gzip压缩,存在兼容性问题
# ...其他配置
}
2
3
4
5
6
7
8
9
10
11
12
13
gzip on
:启用gzip压缩。gzip_types
:指定哪些MIME类型的响应使用gzip压缩,可以根据需要进行添加或删除。图片、音频、视频不建议开启压缩,因为它们本身就已经压缩过,再次使用gzip压缩,不会明显减少文件大小,反而浪费CPU资源,文本格式压缩效果显著。gzip_min_length
:指定只有大于该大小的响应体才进行压缩,以字节为单位。gzip_comp_level
:指定gzip压缩级别,范围是1到9,数字越大压缩率越高,但同时会消耗更多的CPU资源。一般设置为5或6是一个折衷选择。gzip_vary
:在响应头中添加Vary: Accept-Encoding
,通知缓存代理服务器根据请求的Accept-Encoding
头进行缓存,确保缓存的内容是正确的。gzip_disable
:这个指令用于禁用gzip压缩,MSIE
是Microsoft Internet Explorer的缩写,[1-6]
表示版本范围,\.
表示小数点,主要目的是为了避免旧版本Internet Explorer在处理gzip压缩内容时出现兼容性问题。
# 6.2 浏览器查看压缩
我在站点下面放了一个 js 文件,然后通过 Nginx 请求这个文件,在浏览器中使用开发者工具可以查看到请求的情况。
可以看到开启了 gzip 压缩后,文件压缩前和压缩后的大小。如下图: