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

nginxgzip压缩_Linux上配置NginxGzip提高页面加载速度

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

介绍

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

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

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

本文我会给大家介绍下怎么在Ceontos7中启用Nginx的gzip功能,然后对输出到浏览器的页面进压缩.

要求

你需要这些

  • CentOS 7系统和一个能sudo的用户

  • CentOS 7上已经安装好了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.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功能是没有开启的,因为在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.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 

输出后也是没有的

Nginx response headers for CSS file
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的核心模块,也就是说默认情况下Nginx都已经安装好了的,只是没有启用而已。下面我们就在Centos7中新装的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 

然后粘贴下面的内容到文件去

/etc/nginx/nginx.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"  排除IE6浏览器上对文件压缩,因为IE6不再支持gzip压缩的.

  • gzip_vary  gzip_proxied 是让代理服务器上的浏览器和服务器能正确辨认gzip压缩功能.

  • gzip_comp_level 6 设置文件压缩的级别,数字越大,压缩越高,一般6是最合适的.

  • gzip_http_version 1.1 用来限制 gzip 是否支持浏览器HTTP/1.1  协议的 ,一般浏览器不支持的话,gzip很可能就不能支持

  • gzip_min_length 256  让Nginx对小于256kb的文件不压缩.小的文件一般也不用压缩的.

  • gzip_types  列出所有的需要压缩的MIME类型文件. 我们配置的就有, HTML 页面, CSS stylesheets, Javascript 和JSON 文件, XML 文件爱你, icons, SVG 镜像, 和web字体.

重启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 功能是很简单的,但作用是大大的,不仅用户访问起来速度更快,还可以减少宽带的使用,而且搜索引擎也喜欢加载速度快的站。


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • 表单提交前的最后验证:通常在表单提交前,我们必须确认用户是否都把必须填选的做了,如果没有,就不能被提交到服务器,这里我们用到表单的formname.submit()看演示,其实这个对于我们修炼道 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文介绍在使用vmware中配置centos6.5时遇到的网络问题,包括host-only和natip的配置,以及无法上网的原因。同时提供了解决方法,包括去掉host-only配置文件中的gateway。 ... [详细]
  • Itwasworkingcorrectly,butyesterdayitstartedgiving401.IhavetriedwithGooglecontactsAPI ... [详细]
author-avatar
dongtiankzh
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有