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

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

一:ngx_http_gzip_module模块处理的指令:php

一、gzip:css

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

gzip on  | off ; #默认为off

二、gzip_buffers:java

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

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

gzip_buffers 32 4k | 12 8k;

三、gzip_comp_level  正则表达式

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

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

四、gzip_disbale后端

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

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

五、gzip_http_verson

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

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

六、gzip_min_length

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

gzip_min_length 1024;  #默认为20,建议设置位1KB,若是设置为0则表示压缩所有数据包

七、gzip_proxine 

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

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

八、gzip_types

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

gzip_types       text/plain application/x-javascript text/css application/xml;   #通常状况下如此设置

九、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同样,以下:

一、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 模块处理的两个指令

一、gunzip

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

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

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

相关文章
相关标签/搜索