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

Nginx之四:Nginx服务器的压缩功能和缓存功能

在Nginx服务器配置文件中可以通过配置Gzip的使用,可以配置在http块,server块或者location块中设置,Nginx服务器

  在Nginx服务器配置文件中可以通过配置Gzip的使用,可以配置在http块,server 块或者location块中设置,Nginx服务器可以通过ngx_http_gzip_module模块、ngx_http_static_module 模块功能ngx_http_gunzip_module模块对这些指令进行分析和处理。

一:ngx_http_gzip_module模块处理的指令:

1、gzip:

用于打开或者关闭gzip压缩的功能,用法如下:

gzip on | off ; #默认为off

2、gzip_buffers:

用于指定gzip功能压缩文件时使用的缓存空间的大小,语法结构为:

gzip_buffers numner | size ;
number #指定Nginx服务器需要向服务器申请的缓存空间的个数
size #指定每个缓存空间的大小,从Nginx
0.7.8开始,默认number * siez的的值为128,其中size取系统中内存页一页的大小,为4k或者8k等

gzip_buffers 32 4k | 12 8k;

3、gzip_comp_level  

 指定gzip压缩级别,级别为1-9,默认为1,级别越高压缩率越高即压缩后的文件越小,但是越占用CPU,压缩率越小压缩后的文件越大,但是节约CPU。

gzip_comp_level 4; #推荐先设置为中间的值,比如4或者5

4、gzip_disbale

针对不同客户端发起的请求进行有选择的打开或关闭gzip命令,后面跟浏览器的名称,用法如下:

gzip_disable MSIE[1-6]\. #使用正则表达式可以匹配UC字符串中MSIE 1-6 的浏览器,这三个浏览器在发起请求后Nginx将不进行数据包的压缩。

5、gzip_http_verson

早期的一些浏览器或者http客户端可能不支持gzip压缩,因此有客户有时候会看到乱码,那是应为客户端无法进行解压,因此可以根据不同的http协议版本进行选择性的打开或关闭gzip功能,用法如下:

gzip_http_version 1.0 | 1.1; #对使用htto协议1.0和1.1的请求进行压缩

6、gzip_min_length

设置最少压缩的数据包大小,小于此值的数据包将不被压缩,因为大量的小的数据压缩后没有明显的效果还占用了CPU的资源,因此可以设置最少多大的数据才进行压缩,用法如下:

gzip_min_length 1024; #默认为20,建议设置位1KB,如果设置为0则表示压缩全部数据包

7、gzip_proxine 

在Nginx 服务器作为反向代理的时候有效,用于设置nginx 服务器是否对后端返回的结果进行gzip压缩,用法如下:

gzip_proxied off | any; #off为关闭,any为压缩所有后端服务器返回的数据。

8、gzip_types

设置Nginx服务器可以根据响应页面的类型进行选择性的打开或关闭gzip功能,用法如下:

gzip_types text/plain application/x-Javascript text/css application/xml; #一般情况下如此设置

9、gzip_vary

用于设置是否在使用gzip功能时发送带有"vary:Accept-Encoding" 头域的响应头部,该头域的主要功能时要告诉客户端数据已经在服务器进行了压缩,默认设置为off,用法如下:

gzip_vary on| off; #默认为off
还可以使用Nginx 配置的add_header指令强制在Nginx服务器的响应头部添加“Vary:Accept
-Encoding”也可以实现相同的效果。

二:ngx_http_gzip_static_module 模块:

该模块辅助用于搜索和发送经过gzip功能压缩的数据,这些数据以*.gz作为后缀名存储在服务器上,如果客户端请求的数据之前被压缩过,并且客户端的浏览器支持压缩,将直接范湖压缩后的数据,该模块使用的是静态编码,在http响应头部包含content-length头域来指明报文的长度,用于服务器可以确定响应数据的长度的情况,而ngx_http_gzip_module使用chunked编码动态压缩,主要用于服务器无法确定响应数据长度的情况,比如较大文件的下载等情形,此时就要实时生成数据的长度,用法与ngx_http_gzip_module一样,如下:

1、gzip_static 

gzip_static off | on | always; #on为开启并检查客户端浏览器是否中吃gzip压缩功能,off为关闭,always一直发送gzip压缩文件,而不检查浏览器是否支持gzip压缩

 注:这是一个可选模块,如果要使用,必须在编译nginx时添加--with-http_gzip_static_module编译,与该模块有关的 指令与ngx_http_gzip_module的模块使用方法是一致的,本模块有gzip_static、gzip_http_version、gzip_proxied、gzip_disable和gzip_vary等。

三:ngx_http_gunzip_module 模块处理的两个指令

1、gunzip

设置Nginx服务器对不支持gzip的客户端返回解压后的数据,如果客户的浏览器支持压缩还仍然返回压缩的后的数据,及可以同时响应支持gzip的浏览器进程压缩,有可以响应不支持gzip的浏览器。

gunzip on|off ;#on为打开off为关闭

2、gunzip_buffers #用于设置nginx服务器解压gzip文件时候使用的缓存空间大小的,用法如下:

gunzip_buffers number size; #number为nginx服务器向系统向系统申请缓存空间的个数,size为每个空间的大小,单位为k,默认情况下number * size的大小为128k,其中size 的值取系统内存页一页的大小为4KB或者8KB即可,用法如下:
gunzip_buffers
32 4k | 16 8k; #与ngx_http_gzip_module模块下的使用方法一致。

注:这是一个可选模块,如果要使用需要在nginx 编译安装的时候使用--with-http_gunzip_module 指令进行编译

 

四:缓存功能:

1.memcached缓存数据库常用数据。

2.xcache缓存php编译的结果,可以在多个进程之间共享xcode结果。

3.nginx的缓存是缓存opcode处理后的结果,避免客户端请求同一个页面而导致程序每次都处理一下,即再访问同一个页面,直接使用处理后的缓存即可直接返回。

 

五:正向代理和反向代理:

1.正向代理:工作在用户前端,用户请求的所有内容都经过代理服务器。

2.反向代理:工作在服务器前端,只代理请求次服务器的客户端请求,被其代理的服务器叫做"代理服务器"或者"上游服务器"。

转:https://www.cnblogs.com/zhang-shijie/p/5451919.html



推荐阅读
  • 解析 HTTP 头 'Vary: Accept-Encoding' 的作用与重要性
    本文详细探讨了 'Vary: Accept-Encoding' HTTP 头的作用,即指导缓存系统(如代理服务器和 CDN)根据不同的编码需求存储和提供适当的资源版本,确保不同类型的客户端能够接收到适合自己的内容。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • Python安全实践:Web安全与SQL注入防御
    本文旨在介绍Web安全的基础知识,特别是如何使用Python和相关工具来识别和防止SQL注入攻击。通过实际案例分析,帮助读者理解SQL注入的危害,并掌握有效的防御策略。 ... [详细]
  • 详解MyBatis二级缓存的启用与配置
    本文深入探讨了MyBatis二级缓存的启用方法及其配置细节,通过具体的代码实例进行说明,有助于开发者更好地理解和应用这一特性,提升应用程序的性能。 ... [详细]
  • 解决宝塔面板Nginx反向代理缓存问题
    本文介绍如何在宝塔控制面板中通过编辑Nginx配置文件来解决反向代理中的缓存问题,确保每次请求都能从服务器获取最新的数据。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • 计算机视觉初学者指南:如何顺利入门
    本文旨在为计算机视觉领域的初学者提供一套全面的入门指南,涵盖基础知识、技术工具、学习资源等方面,帮助读者快速掌握计算机视觉的核心概念和技术。 ... [详细]
  • 了解如何有效清除远程桌面连接中的缓存记录,对于提升服务器安全性至关重要。本文将指导您完成这一过程。 ... [详细]
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • Spring Boot 初学者指南(第一部分)
    本文介绍了Spring Boot框架的基础知识,包括其设计理念、主要优势以及如何简化传统的J2EE开发流程。 ... [详细]
  • Cadence SPB 16.5 安装指南与注意事项
    本文提供了详细的 Cadence SPB 16.5 安装步骤,包括环境配置、安装过程中的关键步骤以及常见问题的解决方案。适合初次安装或遇到问题的技术人员参考。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 对于初次购买阿里云服务器的新手用户来说,如何高效地利用服务器资源并成功部署网站是一个重要的课题。本文将详细指导您完成从购买服务器到网站上线的六个关键步骤。 ... [详细]
author-avatar
kiruma
phper,javaer,hacker
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有