介绍

在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.反向代理:工作在服务器前端,只代理请求次服务器的客户端请求,被其代理的服务器叫做"代理服务器"或者"上游服务器"。

nginx proxy_pass后gzip开启不成功

Nginx的gzip开启不成功,一般会存在两个问题:
1.因为http版本的问题,早期的一篇博客已经分析了解决办法,gzip_proxied any;
2.可能是文件类型不在范围内,例如:gzip_types application/json;
另外如果nginx无法开启对js的压缩,可参看下面配置,是可用的

gzip  on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript;

参考链接 :
nginx proxy_pass后gzip开启不成功 :http://ciika.com/page/26/

Nginx服务器的压缩功能和缓存功能 : https://www.cnblogs.com/zhang-shijie/p/5451919.html

Nginx服务器的压缩功能和缓存功能相关推荐

  1. python流量实时统计_Python实现获取nginx服务器ip及流量统计信息功能示例

    本文实例讲述了Python实现获取nginx服务器ip及流量统计信息功能.分享给大家供大家参考,具体如下: #!/usr/bin/python #coding=utf8 log_file = &quo ...

  2. Nginx 之五: Nginx服务器的负载均衡、缓存与动静分离功能

    一.负载均衡: 通过反向代理客户端的请求到一个服务器群组,通过某种算法,将客户端的请求按照自定义的有规律的一种调度调度给后端服务器. Nginx的负载均衡使用upstream定义服务器组,后面跟着组名 ...

  3. 通过nginx反向代理配置,及缓存功能配置,加快CDN服务器各个节点的访问速度

    前言 若网站数据中心在国内,怎样才能加快海外访问速度呢?那就需要搭建一台CDN服务器,在海外机房,通过nginx反向代理的方式读取国内数据中心的数据,并且进行缓存.CDN服务器,及nginx反向代理配 ...

  4. android x5全屏白色,x5webview 自定义全屏界面 X5webview完美去掉分享功能和缓存功能(2)...

    privateIX5WebChromeClient.CustomViewCallback xCustomViewCallback;private FrameLayout video_fullView; ...

  5. @EnableCaching、@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig:缓存核心注解,用来实现缓存功能...

    本文主要详解spring中缓存的使用. 背景 缓存大家都有了解过吧,主要用来提升系统查询速度. 比如电商中商品详情信息,这些信息通常不会经常变动但是会高频访问,我们可以将这些信息从db中拿出来放在缓存 ...

  6. 浅谈Nginx服务器的内部核心架构设计

    前言 Nginx 是一个 免费的,开源的,高性能 的 HTTP 服务器和 反向代理,以及 IMAP / POP3 代理服务器. Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名 ...

  7. Nginx之gzip压缩配置

    一ngx_http_gzip_module模块 这个模块主要负责gzip功能的开启和设置 1.1 gzip 语法结构:gzip on | off 默认为off,不弃用gzip,只有该指令置为on的时候 ...

  8. 基于nginx实现缓存功能及uptream模块详细使用方法

    基于nginx实现缓存功能及uptream模块详细使用方法 一般情况下,前端使用nginx做代理或7层负载并向后实现varish/squid做cache server的效果要好的多 nginx与squ ...

  9. nginx服务器模块、web请求处理机制及事件驱动模型、进程功能和进程间通信

    一:Nginx的模块化结构设计: 1.核心模块:指的是nginx服务器运行当中必不可少的模块,这些模块提供了最基本最核心的服务,比如权限控制.进程管理.错误日志.事件驱动.正则表达式解析等,nginx ...

最新文章

  1. 虚拟机win2003安装mysql教程_CentOS7.2虚拟机上安装MySQL 5.6.32的教程
  2. osmnx 应用 可视化两张图异同的点和边
  3. boost::replace相关的测试程序
  4. 【POJ - 2398】Toy Storage (计算几何,二分找位置,叉积,点和直线的位置关系)
  5. P4313 文理分科 网络流
  6. Android之Fragment(二)
  7. 小米盒子显示gitv不动_2020电视盒子排行榜,五款“真香”盒子报到
  8. Arcgis Javascript那些事儿(八)--图层获取与图层顺序
  9. 10、Modules - LoadManual
  10. cad二次开发程序的绿色安装
  11. WebShell脚本检测机器学习一
  12. 安卓 电话黑名单拦截
  13. ubuntu14.04安装skype4.3问题
  14. 微信内置浏览器中如何实现点击电话号码自动到拨号页面?
  15. python爬虫爬取图片并存入本地
  16. 交换机,路由器和防火墙
  17. C# Int16,Int32和Int64的区别
  18. 腾讯云不同账号内网联通
  19. [普及练习场] 生活大爆炸版石头剪刀布
  20. Casing of ./index.less does not match the underlying filesystem

热门文章

  1. oracle 查看日志组切换状态_【DB笔试面试800】在Oracle中,归档和非归档模式之间的不同点是什么?它们各自的优缺点是什么?...
  2. php验证注册不能纯数字,php写一个纯数字验证码教学
  3. 电子计算机说明文作文,关于电脑说明文作文(精选3篇)
  4. python编程案例教程第四章_Python编程入门-第四章 流程控制 -学习笔记
  5. 【宇润日常疯测-004】JS 遍历数组如何快!快!快!
  6. mysql 开发基础系列19 触发器
  7. 深入理解Java面向对象三大特性 封装 继承 多态
  8. 中兴助力软银开启首次5G测试
  9. linux----LAMP之编译安装apache
  10. CentOS安装之后的系统安全配置