在Nginx服务器中如何启用gzip压缩

时间:2019-11-20 08:53:51  来源:igfitidea点击:

如何在Ubuntu Linux服务器上的Nginx中启用gzip/deflate?
在Nginx服务器上,如何为HTML/CSS/JS等文件启用gzip压缩?

在Nginx服务器中启用gzip压缩的步骤

编辑配置文件nginx.conf文件
或者创建一个新的配置文件:

$ sudo vi /etc/nginx/nginx.conf

在http块中添加以下内容:

##
        # Gzip Settings
        ##
 
        gzip on;
        gzip_disable "msie6";
 
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
        # Specify the minimum length of the response to compress (default 20)
        gzip_min_length 500;

检查配置文件,确保没有错误:

$ nginx -t

重启nginx服务器

执行以下命令以重启或重新加载nginx服务器:

$ sudo service nginx reload

或者

$ sudo systemctl reload nginx

或者

$ sudo /etc/init.d/nginx reload

测试压缩是否生效

使用以下语法:

$ curl -I -H 'Accept-Encoding: gzip,deflate' https://your-domain-here/file.css
$ curl -I -H 'Accept-Encoding: gzip,deflate' https://www.theitroad.com/index.html
$ curl -I -H 'Accept-Encoding: gzip,deflate' https://www.theitroad.local/

输出示例:

HTTP/1.1 200 OK
Server: nginx
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html
Last-Modified: Mon, 13 Jun 2016 02:50:26 GMT

可以看到Content-Encoding: gzip,启用了压缩。

我们可以比较压缩和未压缩之间的大小:

下载未压缩文件:

$ curl -s --output text https://www.theitroad.local

下载压缩文件:

$ curl -s --output compressed -H 'Accept-Encoding: gzip,deflate' https://www.theitroad.local

比较文件大小:

$ ls -lh text compressed

关于Nginx模块ngx_http_gzip_module中的选项

  • gzip on: 启用或禁用Nginx下的压缩响应。
  • gzip_disable "msie6": 针对Microsoft IE6客户端,禁用压缩。
  • gzip_vary on: 启用或禁用插入Vary:Accept-Encoding响应头。此标头告知浏览器,客户端是否可以处理网站的压缩版本,尤其是当您的Nginx服务器位于CDN或其他反向缓存服务器之后。
  • gzip_proxied any: 确保我们为所有代理请求启用压缩。
  • gzip_comp_level 6: 我们可以设置响应的gzip压缩级别。可接受的值范围是1(最小)到9(最大)。
  • gzip_buffers 16 8k: 设置压缩缓冲区大小
  • gzip_http_version 1.1: 设置压缩响应所需的最低HTTP版本请求。
  • gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript: 除了text/html之外,还可以对指定的MIME类型的响应进行gziping处理。特殊值*匹配任何MIME类型。 text/html类型的响应始终被压缩。