如何使用gzip模块添加到Nginx的在CentOS 7

介绍

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

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

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

在本指南中,我们将讨论如何配置你的CentOS 7服务器上安装的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.6.3
Date: Fri, 11 Mar 2016 12:53:06 GMT
Content-Type: text/html
Content-Length: 1024
Last-Modified: Fri, 11 Mar 2016 12:48:02 GMT
Connection: keep-alive
ETag: "56e2be82-400"
Accept-Ranges: bytes

在响应中,没有提及的gzip任何。 这告诉我们gzip压缩未在服务器上启用。 这是beause在CentOS 7的支持gzip是Nginx的默认配置完全禁用。 如果启用了压缩,我们会看到更多的头输出话说Content-Encoding: gzip

不仅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.6.3
Date: Fri, 11 Mar 2016 12:58:03 GMT
Content-Type: image/jpeg
Content-Length: 1024
Last-Modified: Fri, 11 Mar 2016 12:48:05 GMT
Connection: keep-alive
ETag: "56e2be85-400"
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.6.3
Date: Fri, 11 Mar 2016 12:59:04 GMT
Content-Type: text/css
Content-Length: 1024
Last-Modified: Fri, 11 Mar 2016 12:48:05 GMT
Connection: keep-alive
ETag: "56e2be85-400"
Accept-Ranges: bytes

第3步 - 启用和配置Nginx的gzip模块

下一步是配置Nginx为所有可以受益于压缩的文件格式启用压缩。

gzip模块在Nginx的核心模块,这意味着它已经安装,但必须启用和配置。 在CentOS上7新鲜Nginx的安装,与所有文件.conf从扩展/etc/nginx/conf.d目录中自动加载。 这允许容易地配置附加模块。

要启用的Nginx gzip模块,创建一个名为配置文件gzip.conf使用nano或您喜爱的文本编辑器。

sudo nano /etc/nginx/conf.d/gzip.conf

粘贴以下内容。

/etc/nginx/conf.d/gzip.conf
##
# `gzip` Settings
#
#
gzip on;
gzip_disable "msie6";

gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
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/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;

保存并关闭文件退出。

让我们来看看这里应用的配置设置:

  • gzip on指令允许Gzip压缩。

  • gzip_disable "msie6"从会收到压缩文件浏览器不包括Internet Explorer 6中,因为IE6不支持gzip根本。

  • gzip_varygzip_proxied设置确保浏览器和服务器会正确识别压缩之间的代理服务器。

  • gzip_comp_level 6套多少文件将被压缩。 数字越高,压缩级别和资源使用率就越高。 6是合理的中间地。

  • gzip_http_version 1.1用于限制gzip压缩的浏览器支持HTTP / 1.1协议。 如果浏览器不支持它,有一个很好的机会,它不支持gzip两种。

  • gzip_min_length 256告诉nginx不压缩超过256字节的文件较小。 非常小的文件几乎不能从压缩中受益。

  • gzip_types列出所有将被压缩的MIME类型。 在这种情况下,列表包括HTML页面,CSS样式表,Javascript和JSON文件,XML文件,图标,SVG图像和网络字体。

要启用新配置,请重新启动Nginx。

sudo systemctl restart nginx

第4步 - 验证新配置

下一步是检查配置的更改是否按预期工作。

我们可以在第2步中测试这就像我们一样,用curl在每个测试文件,审查的输出Content-Encoding: gzip头。

curl -H "Accept-Encoding: gzip" -I http://localhost/test.html

作为回应,你应该看到Content-Encoding: gzip头,这是以前没有的:

Nginx响应头
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Fri, 11 Mar 2016 13:19:16 GMT
Content-Type: text/html
Last-Modified: Fri, 11 Mar 2016 12:48:02 GMT
Connection: keep-alive
Vary: Accept-Encoding
Content-Encoding: gzip

您可以以同样的方式测试所有其他文件:

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

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

支付宝扫一扫打赏

微信扫一扫打赏