1. nginx压缩功能

nginx支持对指定类型的文件进行压缩后再回传给客户端,而且压缩可以设置压缩比,压缩后的文件会明显变小,有助于降低出口带宽的利用率,但是会占用一定的CPU资源。

nginx实现压缩功能是由ngx_http_gzip_module模块提供的。

  • gzip on | off;

    支持环境:http,server,location,if in location

    启用或禁用gzip压缩功能。

  • gzip_comp_level level;

    支持环境:http,server,location

    指定压缩比,压缩比由低到高:1 到 9,默认为1

  • gzip_disable regex …;

    支持环境:http,server,location

    如果请求的User-Agent头信息能被指定的正则表达式匹配,则对响应报文禁用gzip压缩功能。主要是为了兼容不支持gzip压缩的浏览器,比如IE6,不过IE6早就废弃了。

    禁用IE6的压缩功能:gzip_disable “MSIE [1-6].”;

  • gzip_min_length length;

    支持环境:http,server,location

    响应报文想要激活压缩功能的下限大小,报文太小的没有压缩意义,压缩后反而变大,默认为20个字节。

  • gzip_http_version 1.0 | 1.1;

    支持环境:http,server,location

    设置压缩响应所需的请求的最低HTTP协议版本,默认为1.1

  • gzip_buffers number size;

    支持环境:http,server,location

    设置支持压缩功能时缓冲区数量及每个缓存区的大小,默认大小为一个内存页(64位为8k)。

  • gzip_types mime-type …;

    支持环境:http,server,location

    指明仅对哪些类型的资源执行压缩操作,多个用空格分隔。通配符[ * ]可以匹配任意类型。不管是否指定”text/html”类型,该类型的响应总是启用压缩。

    示例:gzip_types text/plain application/xml;

  • gzip_vary on | off;

    支持环境:http,server,location

    如果启用压缩,是否在响应报文首部插入“Vary: Accept-Encoding”

  • gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;

    支持环境:http,server,location

    nginx充当代理服务器时,对于后端服务器的响应报文,在何种条件下启用压缩功能

    参数说明

    off:禁用所有代理请求的压缩,忽略其他参数;

    expired:如果响应头“Cache-Control”字段包含" expired",则启用压缩;

    no-cache:如果响应头“Cache-Control”字段包含" no-cache",则启用压缩;

    no-store:如果响应头“Cache-Control”字段包含" no-store",则启用压缩;

    private:如果响应头“Cache-Control”字段包含"private",则启用压缩;

    no_last_modified:如果响应头部不包含"Last-Modified"字段,则启用压缩

    no_etag:如果响应头部不包含"Etag"字段,则启用压缩

    auth:如果响应头包含"Authorization",则启用压缩;

    any:为所有代理请求启用压缩

压缩功能使用示例如下:

#1.nginx的配置文件如下:
[root@nginx01 ~]# cat /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com;
keepalive_requests 3;
keepalive_timeout 60 60;
charset utf-8,gbk; gzip on;
gzip_comp_level 6;
gzip_min_length 64k;
gzip_types text/plain appliaction/javascript application/x-javascript text/cssapplication/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on; location / {
root /data/nginx/html/web1;
index index.html;
}
} #2.复制日志文件,并修改文件的属主,否则nginx用户无权访问该文件
[root@nginx01 ~]# cp /var/log/messages-20210606 /data/nginx/html/web1/message.html
[root@nginx01 ~]# ll /data/nginx/html/web1/message.html
-rw------- 1 root root 1939879 Jun 17 22:32 /data/nginx/html/web1/message.html
[root@nginx01 ~]# chown nginx.nginx /data/nginx/html/web1/message.html [root@nginx01 ~]# ll /data/nginx/html/web1/index.html
-rw-r--r-- 1 nginx nginx 16 Jun 16 21:56 /data/nginx/html/web1/index.html #3.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service #4.客户端测试压缩功能,curl要使用--compress参数才会支持压缩
#index.html文件小于64k,未进行压缩
[root@xuzhichao ~]# curl --head --compress http://www.nginx01.com
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 17 Jun 2021 14:42:56 GMT
Content-Type: text/html; charset=utf-8,gbk
Content-Length: 16
Last-Modified: Wed, 16 Jun 2021 13:56:31 GMT
Connection: keep-alive
Keep-Alive: timeout=60
ETag: "60ca030f-10"
Accept-Ranges: bytes #message.html文件启用的压缩
[root@xuzhichao ~]# curl --head --compress http://www.nginx01.com/message.html
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 17 Jun 2021 14:43:05 GMT
Content-Type: text/html; charset=utf-8,gbk
Last-Modified: Thu, 17 Jun 2021 14:32:15 GMT
Connection: keep-alive
Keep-Alive: timeout=60
Vary: Accept-Encoding
ETag: W/"60cb5cef-1d99a7"
Content-Encoding: gzip <==启用压缩

WEB服务与NGINX(14)-NGINX的压缩功能的更多相关文章

  1. flask在centos下搭建web服务【uwsgi,nginx】

    centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...

  2. Web服务器之Nginx详解(操作部分)

    大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...

  3. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  4. nginx 作为静态资源web服务

    Nginx作为静态资源web服务 静态资源web服务-CDN场景 Nginx资源存储中心会把静态资源分发给“北京Nginx”,“湖南Nginx”,“山东Nginx”. 然后北京User发送静态资源请求 ...

  5. svn + nginx unit + python3自动化发布web服务方法

    本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...

  6. Nginx 高级配置-压缩功能

    Nginx 高级配置-压缩功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx压缩相关参数概述 1>.gzip on | off; Nginx支持对指定类型的文 ...

  7. nginx的gzip压缩功能

    我们在开发网站的时候,应该要考虑到pv,因为pv比较大可能会造成服务器带宽不够用,进而导致用户体验变差. 这个时候我们就可以考虑用nginx的gzip功能. 在nginx中开启gzip压缩功能很简单, ...

  8. linux web服务基础知识,dns

    #web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx   >   web  server  服务端浏览器  >    web  client  客户端 #dns解析 ...

  9. web服务的简单介绍及apache服务的安装

    一,web服务的作用:  是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览:   可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...

  10. web服务基础

    Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...

随机推荐

  1. 【Java】请写出你最常见到的 5 个 runtime exception

    请写出你最常见到的 5 个 runtime exception. ​ 参考:https://blog.csdn.net/qq_20417499/article/details/80222820 Cla ...

  2. 记打包的2个错误-项目BotBattle

    目录 记打包项目的 2 个错误 0.概述 1.spring-boot-maven-plugin 版本 1.1 问题 1.2 添加版本号 2.总项目 2.1 问题 2.2 核验主类 2.3backend ...

  3. #dp,高精度#洛谷 4295 [SCOI2003]严格N元树

    题目 求有多少棵严格 \(n\) 叉树深度为 \(k\) 分析 考虑往下放子孙挺难维护的,考虑在上面换新的根. 设 \(dp[i]\) 表示深度不超过 \(i\) 的方案数,那么 \(dp[i]=dp ...

  4. Pandas对象(数据结构)

    Pandas是Python的一个扩展程序库,是在Numpy基础上建立的,提供高性能.易使用的数据结构和数据分析工具. Pandas 可以从各种文件格式比如 CSV.JSON.SQL.Excel 等中导 ...

  5. RabbitMQ 04 直连模式-Java操作

    使用Java原生的方式使用RabbitMQ现在已经较少,但这是基础,还是有必要了解的. 引入依赖. <dependency> <groupId>com.rabbitmq< ...

  6. 一个很好用的ORM库--peewee

    发现一个很好用的 ORM 库 -- peewee 以下为简单示例 from peewee import * db = SqliteDatabase('test.db') # 定义表结构 class P ...

  7. SSM使用自定义ConditionalOnProperty实现按需加载spring bean

    SSM使用自定义ConditionalOnProperty实现按需加载spring bean 背景: 公司提供的系统框架是SSM架构,SSM架构是没有springboot的ConditionalOnP ...

  8. javascript现代编程系列教程之一:区块作用域对VAR不起作用的问题

    在JavaScript中,使用var声明的变量具有函数作用域,而不是块级作用域.这意味着在一个函数内部,使用var声明的变量在整个函数范围内都是可见的,包括嵌套的块(如if语句.for循环等).为了避 ...

  9. Oracle 简单的创建一个定时任务job

    Oracle 简单的创建一个定时任务job Oracle 简单的创建一个定时任务job 没有什么前置步骤,无非就是把存储过程或者SQL提前写好,就不说了,直接执行一下下面的语句即可创建一个job de ...

  10. 力扣344(java & python)-反转字符串(简单)

    题目: 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这一问题. 示例 1 ...