# 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 压缩后,文件压缩前和压缩后的大小。如下图:

