如何使用gzip模块添加到Nginx的在Ubuntu 14.04

介绍

网站的加载速度取决于浏览器必须下载的所有文件的大小。 减少要传输的文件的大小可以使网站不仅加载更快,而且对于必须支付其带宽使用的那些人而言更便宜。

gzip是一种流行的数据压缩程序。 您可以配置的Nginx使用gzip压缩它提供的飞行文件。 然后,那些文件由检索时支持它的浏览器解压缩,而没有任何损失,但有利于在web服务器和浏览器之间传送较少量的数据。

由于压缩一般的工作方式,还怎么gzip作品,某些文件压缩比别人做得更好。 例如,文本文件压缩非常好,结果通常会减少两倍以上。 另一方面,图像如JPEG或PNG文件已经通过它们的性质和第二压缩使用压缩gzip产量很少或没有的结果。 压缩文件会占用服务器资源,因此最好只压缩那些在大小上显着减小的文件。

在本指南中,我们将讨论如何配置你的Ubuntu 14.04服务器上安装的Nginx利用gzip压缩减少发送到网站访问者内容的大小。

先决条件

要遵循本教程,您需要:

第1步 - 创建测试文件

在此步骤中,我们将创建默认Nginx的目录数的测试文件的文本gzip的压缩。

为了决定什么样的文件通过网络提供,Nginx不分析文件内容,因为它不够快。 相反,它只是查找文件的扩展名来确定其MIME类型 ,表示该文件的目的。

因为这种行为,测试文件的内容是不相关的。 通过适当地命名文件,我们可以欺骗Nginx认为一个完全空的文件是一个图像,另一个,例如,是一个样式表。

在我们的配置中,Nginx不会压缩非常小的文件,因此我们将创建大小为1千字节的测试文件。 这将允许我们验证Nginx是否在其应该使用压缩,压缩一种类型的文件,而不是这样做与其他人。

创建一个名为1千字节文件test.html使用Nginx的目录的默认truncate 扩展名表示它是一个HTML页面。

sudo truncate -s 1k /usr/share/nginx/html/test.html

让我们创建以相同的方式多几个测试文件:一个jpg的图像文件,人们css样式表,和一个js JavaScript文件。

sudo truncate -s 1k /usr/share/nginx/html/test.jpg
sudo truncate -s 1k /usr/share/nginx/html/test.css
sudo truncate -s 1k /usr/share/nginx/html/test.js

第2步 - 检查默认行为

下一步是检查Nginx在新安装时如何使用我们刚刚创建的文件进行压缩。

让我们来看看,如果名为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 14.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

第3步 - 配置Nginx的gzip设置

下一步是配置Nginx不仅提供压缩的HTML文件,而且还提供可以从压缩中受益的其他文件格式。

要改变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 service nginx restart

第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) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

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

支付宝扫一扫打赏

微信扫一扫打赏