5-nginx Gzip
Nginx Gzip 压缩
Gzip 压缩通过在线实时压缩响应数据,显著减少传输的数据量,从而节省带宽并提高页面加载速度。虽然这会消耗一定的 CPU 资源,但总体上可以提升用户体验。Nginx 提供了 ngx_http_gzip_module
模块来实现这一功能。
开启或关闭 Gzip
使用 gzip
指令来开启或关闭 Gzip 压缩。
1 | gzip on; |
设置 Gzip 缓冲区大小
gzip_buffers
指令设置用于 Gzip 压缩的缓存空间大小。
1 | gzip_buffers 4 16k; |
NUMBER
: 空间数SIZE
: 每个缓存空间的大小
设置 Gzip 压缩级别
gzip_comp_level
指令设置压缩级别,范围为 1 到 9,数值越大压缩比越高,但压缩时间也越长。通常建议设置为 5。
1 | gzip_comp_level 5; |
针对特定客户端禁用 Gzip
gzip_disable
指令可以根据客户端的 User-Agent 字符串选择性地禁用 Gzip 压缩。支持正则表达式。
1 | gzip_disable "MSIE [1-6]\."; |
例如,低版本的 IE 浏览器不支持 Gzip 压缩,可以禁用。
设置最小压缩数据大小
gzip_min_length
指令设置压缩数据的最小大小,防止对太小的数据进行压缩导致数据变大。
1 | gzip_min_length 1k; |
指定 MIME 类型进行压缩
gzip_types
指令指定哪些 MIME 类型的数据需要进行压缩。默认情况下,只有 text/html
会被压缩。可以设置为 *
来压缩所有类型的数据。
1 | gzip_types text/plain application/x-javascript text/css text/html application/xml application/json; |
发送 Vary 头
gzip_vary
指令发送 Vary: Accept-Encoding
头,告知接收方数据经过了压缩,这对于不支持 Gzip 的客户端很有帮助。
1 | gzip_vary on; |
使用静态 Gzip 压缩
gzip_static
指令允许 Nginx 直接提供预压缩的文件,而不是在每次请求时动态压缩。这可以显著减少 CPU 使用率,但需要预先生成 .gz
文件。
1 | gzip_static on; |
预压缩文件
为了使用 gzip_static
,你需要预先生成 .gz
文件。可以使用以下命令生成:
1 | gzip -c /path/to/file > /path/to/file.gz |
示例配置
以下是一个综合的 Nginx Gzip 压缩配置示例:
1 | http { |
注意事项
- CPU 资源:Gzip 压缩会占用 CPU 资源,特别是在高并发环境下。可以通过调整压缩级别和缓存大小来平衡 CPU 使用率和压缩效果。
- 预压缩:对于静态文件,建议使用预压缩来减少 CPU 开销。
- 浏览器兼容性:确保目标浏览器支持 Gzip 压缩,特别是旧版本的浏览器。
通过以上配置和优化,你可以有效地利用 Gzip 压缩来提升 Nginx 服务器的性能和用户体验。