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

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

398次阅读
没有评论

共计 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、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7992798
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...