热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nginxgzip压缩_Ubuntu14.04上配置NginxGzip页面压缩模块

默认情况下,Nginx的gzip压缩是关闭的,gzip压缩功能就是可以让你节省不少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对texthtml进行压缩,如果要对html之外的内容进行压缩传输,我们需要手动来调。

介绍

页面的加载速度决定于浏览器加载页面的大小,减少页面的大小不仅可以提高页面的访问速度,还可以减少宽带成本.

gzip 是一个很流行的压缩程序,我们可以自己配置Nginx的Gzip来加速页面访问速度,压缩后的页面跟原来一样,但是传输的速度就大大加快了.

跟一般压缩文件一样的工作原理,但是gzip的压缩功能会好一些,一般会压缩两次。而且,JPEG or PNG
等图片首先会按照自然的压缩一次,然后gzip再压缩一次。所以说我们使用gzip的时候一般是对那些需要压缩的文件进行压缩.

我们在前面讲到了Linux上配置Nginx Gzip,虽然在所有的Linux上安装某些软件是相似的,但我们今天还是重点说下在Ubuntu中启用Nginx的gzip功能,然后对输出到浏览器的页面进压缩

要求

你需要这些

  • Ubuntu 14.04系统和一个能sudo的用户

  • Ubuntu 14.04上已经安装好了Nginx

步骤1 — 创建测试文件

这里我们会在默认的Nginx文件夹下面创建几个文件来测试gzip功能

先确认下通过网络访问的文件格式,Nginx是不会去分析你文件内容的,所有就不会很快,但Nginx是根据文件的扩展名来决定文件MIME类型。

因为这个原因,我们测试文件的内容和扩展名不一样了,然后我们把文件的名字重名名下,这样让Nginx误认为我们给的文件是一个空的图片或者图表文件.

在我们教程的配置中,我们是不会对小文件进行压缩的,所有我们现在创建/复制一些比较大的文件,至少要大于1kb吧:)这样我们才能够测试出Nginx的压缩功能只对某个文件压缩而不是其他的文件.

我们新建一个1kb的htm文件,命令test.html ,然后放到Nginx的默认文件夹truncate处.根据名字的扩展名展示给Nginx的是一个静态文件.

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

然后用同样的方式创建一些其他的文件:  一张jpg 图片文件一个css 文件, 和一个jsJavascript文件.

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默认的反应

接下来我们就是来测试看看Nginx对这些刚配置的文件是怎么压缩反应的.

我们看看test.html文件是不是压缩了,已http方式请求Nginx服务器上的某个经过gzip压缩后的html文件命令是: (Accept-Encoding: gzip).

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

相应后我们看下HTTP头信息:

Nginx response headers
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

在上面的相应信息中我们没有看到有gzip的字样,说明我们服务器上的gzip功能是没有开启的,因为在Ceontos7中Nginx默认是关闭了gzip功能了的,如果gzip要是开启了的话我们会看到类似这样的字样Content-Encoding: gzip.

不仅仅html没有压缩其他的文件也没有压缩的,我们可以用同样的方式来测试下 test.jpg

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

输出可能是这样的:

Nginx response headers
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 

输出后也是没有的

Nginx response headers for CSS file
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的压缩模块,让其对所有的文件都压缩.

gzip模块是Nginx的核心模块,也就是说默认情况下Nginx都已经安装好了的,只是没有启用而已。下面我们就在Ubuntu 14.04中新装的Nginx环境上配置启用Nginx的gzip模块,默认下面下/etc/nginx/conf.d文件夹下面的所有.conf扩展文件都是会引入的 ,这让我们配置更方便。

我们使用vi或者nano在Nginx的/etc/nginx/conf.d下面创建一个gzip.conf 文件.

sudo nano /etc/nginx/conf.d/gzip.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对小于265kb的文件不压缩,因为再小了的文件压缩也没有多大意义了.
  • 追加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 restart nginx 

步骤4 —测试新的配置

下面就来测试下我们的配置是否生效

我们还是安装步骤2那样来测试,看看头信息里面有没有 Content-Encoding: gzip .

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

在相应头信息中我们找下是否有Content-Encoding: gzip

Nginx response headers
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 http://localhost/test.jpg 
curl -H "Accept-Encoding: gzip" -I http://localhost/test.css 
curl -H "Accept-Encoding: gzip" -I http://localhost/test.js

当我们找到Content-Encoding: gzip 后就说明gzip功能已开启了

结论

修改Nginx配置完全使用zip 功能是很简单的,但作用是大大的,不仅用户访问起来速度更快,还可以减少宽带的使用,而且搜索引擎也喜欢加载速度快的站。


推荐阅读
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • nginx 反向代理proxy参数讲解
    ![](http:i2.51cto.comimagesblog20180805c32a728954d93ee2a4e4fb59c150a15b.png?x-oss-processi ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • buildah是用来修改和改造镜像的工具,和podman同源,很多参数相似!只是podman用来纯粹运行容器,一个纯粹建造容器!1.获取容器并赋名buildah--nametest ... [详细]
  • linux下编译安装lnmp
    2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
  • CentOS 7配置SSH远程访问及控制
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
手艺人生大姑娘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有