阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

126次阅读
没有评论

共计 3609 个字符,预计需要花费 10 分钟才能阅读完成。

在 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 的文章您也可能喜欢,不妨参考下:

CentOS 7.2 下编译安装 PHP7.0.10+MySQL5.7.14+Nginx1.10.1  http://www.linuxidc.com/Linux/2016-09/134804.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

Nginx 的 500,502,504 错误解决方法 http://www.linuxidc.com/Linux/2015-03/115507.htm

CentOS 7 编译安装 Nginx1.10.2 脚本启动失败解决思路 http://www.linuxidc.com/Linux/2017-01/139794.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140492.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3609字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中