如何添加gzip模块到Ubuntu 16.04上的Nginx

介绍

网站的加载速度取决于浏览器必须下载的所有文件的大小。减少要传输的文件的大小可以使网站不仅加载更快,而且对于必须支付其带宽使用的那些人而言更便宜。 gzip是一种流行的数据压缩程序。 您可以配置的Nginx使用 gzip压缩它提供的飞行文件。然后,那些文件由检索时支持它的浏览器解压缩,而没有任何损失,但有利于在web服务器和浏览器之间传送较少量的数据。 由于压缩一般的工作方式,还怎么 gzip作品,某些文件压缩比别人做得更好。 例如,文本文件压缩非常好,结果通常会减少两倍以上。 另一方面,图像如JPEG或PNG文件已经通过它们的性质和第二压缩使用压缩 gzip产量很少或没有的结果。压缩文件会占用服务器资源,因此最好只压缩那些在大小上显着减小的文件。 在本指南中,我们将讨论如何配置你的Ubuntu 16.04服务器上安装的Nginx利用 gzip压缩减少发送到网站访问者内容的大小。

先决条件

要遵循本教程,您需要:

第1步 - 创建测试文件

在此步骤中,我们将创建默认Nginx的目录数的测试文件的文本 gzip的压缩。 为了决定什么样的文件通过网络提供,Nginx不分析文件内容,因为它不够快。相反,它只是查找文件的扩展名来确定其 MIME类型 ,表示该文件的目的。 由于这种行为,测试文件的内容是不相关的。通过适当地命名文件,我们可以欺骗Nginx认为一个完全空的文件是一个图像,另一个,例如,是一个样式表。 在我们的配置中,Nginx不会压缩非常小的文件,因此我们将创建大小为1千字节的测试文件。这将允许我们验证Nginx是否在其应该使用压缩,压缩一种类型的文件,而不是这样做与其他人。 创建一个名为1千字节文件 test.html使用Nginx的目录的默认 truncate 。扩展名表示它是一个HTML页面。
sudo truncate -s 1k /var/www/html/test.html
让我们创建以相同的方式多几个测试文件:一个 jpg的图像文件,人们 css样式表,和一个 js JavaScript文件。
sudo truncate -s 1k /var/www/html/test.jpg
sudo truncate -s 1k /var/www/html/test.css
sudo truncate -s 1k /var/www/html/test.js
下一步是检查Nginx在新安装时如何使用我们刚刚创建的文件进行压缩。

第2步 - 检查默认行为

让我们来看看,如果名为HTML文件 test.html是配有压缩。 该命令要求从我们的Nginx服务器的文件,并指定这是很好服务 gzip通过使用HTTP标头(压缩的内容 Accept-Encoding: gzip )。
curl -H "Accept-Encoding: gzip" -I http://localhost/test.html
作为响应,您应该会看到几个HTTP响应标头:
Nginx响应头
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 19 Jan 2016 20:04:12 GMT
Content-Type: text/html
Last-Modified: Tue, 04 Mar 2014 11:46:45 GMT
Connection: keep-alive
Content-Encoding: gzip
在最后一行中,可以看到 Content-Encoding: gzip头。 这告诉我们 gzip压缩已经被用于发送该文件。 这发生,因为在Ubuntu 16.04,Nginx的有 gzip安装与它的默认设置后会自动启用压缩。 但是,默认情况下,Nginx只压缩HTML文件。每次安装时,其他文件将以未压缩的形式提供。为了验证这一点,你可以要求我们的一个名为test的图像 test.jpg以同样的方式。
curl -H "Accept-Encoding: gzip" -I https://www.youcl.com/uploadshttp://localhost/test.jpg
结果应该与以前略有不同:
Nginx响应头
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 19 Jan 2016 20:10:34 GMT
Content-Type: image/jpeg
Content-Length: 0
Last-Modified: Tue, 19 Jan 2016 20:06:22 GMT
Connection: keep-alive
ETag: "569e973e-0"
Accept-Ranges: bytes
没有 Content-Encoding: gzip输出,这意味着没有压缩送达该文件头。 您可以使用测试CSS样式表重复测试。
curl -H "Accept-Encoding: gzip" -I http://localhost/test.css
再一次,没有提到输出中的压缩。
CSS文件的Nginx响应头
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 19 Jan 2016 20:20:33 GMT
Content-Type: text/css
Content-Length: 0
Last-Modified: Tue, 19 Jan 2016 20:20:33 GMT
Connection: keep-alive
ETag: "569e9a91-0"
Accept-Ranges: bytes
下一步是配置Nginx不仅提供压缩的HTML文件,而且还提供可以从压缩中受益的其他文件格式。

第3步 - 配置Nginx的gzip设置

要改变Nginx的 gzip配置,打开主Nginx的配置文件 nano或您喜爱的文本编辑器。
sudo nano /etc/nginx/nginx.conf
找到 gzip设置部分,它看起来像这样:
/etc/nginx/nginx.conf
. . .
##
# `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/x-javascript text/xml application/xml application/xml+rss text/javascript;
. . .
你可以看到,默认情况下 gzip压缩是由启用 gzip on指令,但一些额外的设置与注释 #注释符号。我们将对此部分进行一些更改:
  • (删去即,使通过取消注释的所有注释行的其他设置#在该行的开头)
  • 添加gzip_min_length 256;指令,它告诉Nginx的不压缩超过256字节的文件较小。这是非常小的文件几乎不能从压缩中受益。
  • 追加gzip_types与其他文件类型,表示网页字体,指令ico图标和SVG图片。
应用这些更改后,设置部分应如下所示:
/etc/nginx/nginx.conf
. . .
##
# `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_min_length 256;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
. . .
保存并关闭文件退出。 要启用新配置,请重新加载Nginx。
sudo systemctl reload nginx
下一步是检查配置的更改是否按预期工作。

第4步 - 验证新配置

我们可以在第2步中测试这就像我们一样,用 curl在每个测试文件,审查的输出 Content-Encoding: gzip头。
curl -H "Accept-Encoding: gzip" -I http://localhost/test.html
curl -H "Accept-Encoding: gzip" -I https://www.youcl.com/uploadshttp://localhost/test.jpg
curl -H "Accept-Encoding: gzip" -I http://localhost/test.css
curl -H "Accept-Encoding: gzip" -I http://localhost/test.js
现在只有 test.jpg ,这是一个图像文件时,应保持压缩。 在其它的例子,你应该能找到 Content-Encoding: gzip输出头。 如果是这样的话,你已经配置 gzip在Nginx的压缩成功!

结论

Nginx的更改配置,以充分利用 gzip压缩是容易的,但好处是巨大的。 不仅具有有限带宽的访问者将更快地接收网站,而且Google将对网站加载更快感到高兴。 速度是获得牵引力作为现代网络的重要组成部分,并使用 gzip是提高它的一大步骤。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏