可搜索,可注册,可登录,致敬逗比大佬!尽在救援版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

Nginx 启用 GZip 压缩

News mlone11978 106℃ 0评论

站点在上线前,代码会做压缩,图片也会做压缩。而对于文本文档,在服务端发送数据之前进行压缩也很重要。GZip 压缩就是其中的一种压缩方式。

GZip 压缩

以下字段的写入配置段可以为:http server location

gzip            on; gzip_vary       on; gzip_min_length 1000; gzip_buffers    16 10k; gzip_comp_level 3; gzip_proxied    any; gzip_types      text/html; gzip_http_version 1.0; gzip_disable    "msie6"; 

其中:

gzip 值为 on/off,表示开启或关闭 GZip 压缩。

gzip_vary 输出 Vary 响应头,在 response header 中添加 Vary:Accept-Encoding 这一项,用于解决某些缓存服务的可能的毛病。

gzip_min_length 指定压缩数据的最小长度,只有大于或等于最小长度才会对其压缩。默认值是 20 字节。

gzip_buffers 指定 GZip 压缩的 buffer 区的数量和大小。

gzip_comp_level 压缩等级,可选值为 1~9。太高的压缩水平也会需要更多的 CPU 时间,建议指定 1~3 中的一级即可。

gzip_types 指定允许压缩的文件类型。本文中以 html 格式为例。更多文件格式,请参考 Nginx 的默认配置文件 mime.types

gzip_http_version 默认 Nginx 只对 HTTP/1.1 及以上的请求才会启用 GZip,因为早期的 HTTP/1.0 客户端的 GZip 有缺陷。现在已不用担心此问题,设置这项的值为 1.0 来启用对 HTTP/1.0 的 GZip 压缩。

gzip_disable 写入一个正则字符串,当 request header 中的 UserAgent 字段匹配这条正则时,response 不会启用 GZip 压缩。可用于解决在启用 GZip 压缩后某些浏览器的不兼容问题。指定值为 msie6 表示对 MicroSoft IE 4~6 浏览器不启用压缩。

GZip 压缩的增强插件

Nginx 默认就能提供上述功能,下面介绍两个 GZip 压缩的增强插件:

  • http_gzip_static_module
  • http_gunzip_module

若要启用上述插件,需要在编译 Nginx 时,加入相应模块:

./configure  ... --with-http_gzip_static_module --with-http_gunzip_module 

http_gzip_static_module

# 配置段: http, server, location # 值: on, off, always gzip_static  ${value}; 

这个模块可以让 Nginx 发送一个已经压缩好的 .gz 文件,而不是发送普通文件。

在 gzip_static 的值设为 on 后,Nginx 会先判断客户端是否支持 .gz 文件,如果支持就发送 .gz 文件,不支持就发送普通文件。通过发送压缩过的文件来节省传输时间。

也可以将 gzip_static 的值设为 always,这时 Nginx 总是发送 .gz 文件(如果 .gz 文件存在的话),而不会检查客户端是否支持 .gz 文件。

http_gunzip_module

# 配置段: http, server, location # 值: on, off gunzip  ${value}; 

这个模块让 Nginx 发送一个经解压的文件给那些不支持 gzip 的客户端,并且经常与 ngx_http_gzip_static_module 搭配使用(令 gzip_static = always)。

http_gzip_static_module 发送一个已经压缩好的文件,而 http_gunzip_module 可以解压文件以让 Nginx 发送给不支持压缩的客户端。

转载请注明:逗比根据地 » Nginx 启用 GZip 压缩

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址