如何在Linux或Unix系统上的Nginx服务器中启用gzip压缩
时间:2020-01-09 14:17:06 来源:igfitidea点击:
如何在nginx Web服务器上为JS/CSS/HTML文件启用gzip压缩?
如何在Ubuntu Linux服务器上的Nginx中启用gzip/deflate?
如何在FreeBSD Unix服务器上使用NGINX Web服务器配置gzip压缩?
您需要使用ngx_http_gzip_module模块。
它使用gzip方法压缩所有有效的HTTP响应(文件)。
这对于减小数据传输大小并加快静态资产(例如JavaScript,CSS文件等)的网页很有用。
本教程说明了如何在Linux或类似Unix的系统上运行的nginx中启用gzip/deflate。
在Nginx服务器中启用gzip压缩的步骤
编辑您的nginx.conf文件或创建一个名为/etc/nginx/conf.d/static_gzip.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
sh nginx:配置文件/etc/nginx/nginx.conf的语法正常。
nginx:配置文件/etc/nginx/nginx.conf测试成功。
重启nginx服务器
执行以下命令以重新启动或重新加载nginx服务器:
$ sudo service nginx reload
或者
$ sudo systemctl reload nginx
或者
$ sudo /etc/init.d/nginx reload
如何验证gzip/deflate是否正常工作?
使用以下语法:
$ curl -I -H 'Accept-Encoding: gzip,deflate' https://your-domain-here/file.css $ curl -I -H 'Accept-Encoding: gzip,deflate' https://s0.theitroad.org/assets/auto/cms/wp-content/cache/autoptimize/css/autoptimize_4c2bea242e2386438912dd88773b352c.css $ curl -I -H 'Accept-Encoding: gzip,deflate' https://www.theitroad.local/
输出示例:
HTTP/1.1 200 OK Server: nginx Date: Sun, 05 Mar 2016 18:45:31 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Vary: Accept-Encoding X-Whom: l1-com-cyber Strict-Transport-Security: max-age=15768000; includeSubdomains Link: ; rel="https://api.w.org/" X-Varnish: 1812270 1794298 Age: 475 Via: 1.1 varnish-v4 Front-End-Https: on Content-Encoding: gzip
如果您的原始Nginx服务器在CDN/WAF之后,请尝试:
$ curl -H 'Accept-Encoding: gzip,deflate' \ --resolve s0.theitroad.org:YOUR-ORIGIN-Public-IPv4-HERE \ -H 'Host: s0.theitroad.org' https://s0.theitroad.org/
了解Nginx ngx_http_gzip_module选项
- gzip on:启用或禁用Nginx下的响应gzipping。
- gzip_disable" msie6":禁用Microsoft IE6客户端的gziping。
- 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处理。特殊值*匹配自Nginx版本0.8.29起的任何MIME类型。 text/html类型的响应始终被压缩。
Nginx gzip与纯文本大小
首先,下载纯文本文件:
$ URL="https://www.theitroad.local/" $ curl -s --output text $URL
接下来,下载压缩后的文本文件:
$ curl -s --output compressed -H 'Accept-Encoding: gzip,deflate' $URL
使用ls命令比较文件大小:
$ ls -l text compressed $ ls -lh text compressed $ file text compressed
比较普通文件/文本文件和压缩文件的文件大小。