Nginx R31 doc-11-Compression and Decompression 压缩与解压缩

前言

大家好,我是老马。很高兴遇到你。

我们为 java 开发者实现了 java 版本的 nginx

https://github.com/houbb/nginx4j

如果你想知道 servlet 如何处理的,可以参考我的另一个项目:

手写从零实现简易版 tomcat minicat

压缩与解压缩

压缩服务器响应,或者对不支持压缩的客户端进行解压缩,以提高交付速度并减少服务器的开销。

这一部分描述了如何配置响应的压缩或解压缩,以及发送压缩文件。

介绍

压缩响应通常会显著减小传输数据的大小。然而,由于压缩发生在运行时,它也可能会增加相当大的处理开销,从而对性能产生负面影响。

NGINX 在将响应发送给客户端之前执行压缩,但不会对已经压缩的响应进行“双重压缩”(例如,通过代理服务器压缩的响应)。

启用压缩

要启用压缩,请使用 gzip 指令,并使用 on 参数。

gzip on;

默认情况下,NGINX 只会压缩 MIME 类型为 text/html 的响应。要压缩其他 MIME 类型的响应,请包含 gzip_types 指令并列出其他类型。

gzip_types text/plain application/xml;

要指定响应的最小长度以进行压缩,请使用 gzip_min_length 指令。默认值为 20 字节(在此调整为 1000):

gzip_min_length 1000;

默认情况下,NGINX 不会压缩代理请求的响应(来自代理服务器的请求)。请求来自代理服务器的事实是由请求中的 Via 标头字段的存在确定的。要配置这些响应的压缩,请使用 gzip_proxied 指令。该指令具有许多参数,指定 NGINX 应压缩哪些类型的代理请求。例如,仅对不会在代理服务器上缓存的请求压缩响应是合理的。为此,gzip_proxied 指令具有参数,指示 NGINX 检查响应中的 Cache-Control 标头字段,并在该值为 no-cache、no-store 或 private 时压缩响应。此外,必须包括 expired 参数以检查 Expires 标头字段的值。以下是这些参数的设置示例,以及 auth 参数,该参数检查 Authorization 标头字段的存在(授权响应特定于最终用户,通常不会被缓存):

gzip_proxied no-cache no-store private expired auth;

与大多数其他指令一样,配置压缩的指令可以包含在 http 上下文或服务器或位置配置块中。

压缩 gzip 的整体配置可能如下所示。

server {gzip on;gzip_types      text/plain application/xml;gzip_proxied    no-cache no-store private expired auth;gzip_min_length 1000;...
}

启用解压缩

一些客户端不支持使用 gzip 编码方法的响应。

与此同时,可能希望存储压缩数据,或者在运行时压缩响应并将其存储在缓存中。

为了成功为既接受压缩数据又不接受压缩数据的客户端提供服务,NGINX 可以在发送给后一种类型的客户端时实时解压缩数据。

要启用运行时解压缩,请使用 gunzip 指令。

location /storage/ {gunzip on;...
}

gunzip 指令可以在与 gzip 指令相同的上下文中指定:

server {gzip on;gzip_min_length 1000;gunzip on;...
}

请注意,此指令是在一个单独的模块中定义的,默认情况下可能不包含在 NGINX Open Source 构建中。

发送压缩文件

为了向客户端发送文件的压缩版本而不是常规版本,请在适当的上下文中将 gzip_static 指令设置为 on。

location / {gzip_static on;
}

在这种情况下,为了处理对 /path/to/file 的请求,NGINX 尝试找到并发送文件 /path/to/file.gz。

如果文件不存在,或者客户端不支持 gzip,则 NGINX 发送文件的未压缩版本。

请注意,gzip_static 指令不启用实时压缩。它仅使用由任何压缩工具预先压缩的文件。要在运行时压缩内容(而不仅仅是静态内容),请使用 gzip 指令。

此指令是在一个单独的模块中定义的,默认情况下可能不包含在 NGINX Open Source 构建中。

nginx 系列

从零手写实现 nginx-01-为什么不能有 java 版本的 nginx?

从零手写实现 nginx-02-nginx 的核心能力

从零手写实现 nginx-03-nginx 基于 Netty 实现

从零手写实现 nginx-04-基于 netty http 出入参优化处理

从零手写实现 nginx-05-MIME类型(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型)

Nginx 实战-01-nginx ubuntu 安装笔记

Nginx 实战-01-nginx windows 安装笔记

Nginx 实战-02-nginx proxy_pass 服务代理访问 使用笔记 ubuntu nodejs

Nginx 实战-03-nginx 负载均衡

Nginx 实战-04-nginx 不同的地址访问不同的服务

Nginx 实战-05-nginx 反向代理实现域名到指定的 ip

Nginx-01-聊一聊 nginx

Nginx-01-Nginx 是什么

Nginx-02-为什么使用 Nginx

Nginx-02-Nginx Ubuntu 安装 + windows10 + WSL ubuntu 安装 nginx 实战笔记

Nginx-02-基本使用

Nginx-03-Nginx 项目架构

Nginx-04-Docker Nginx

Nginx-05-nginx 反向代理是什么?windows 下如何配置使用 nginx

Nginx-06-nginx 汇总入门介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 简易操作Excel

首先,我们需要创建一个数据库表来存储这些单词及其相关信息。以下是一个简单的SQL语句示例,用于创建这样一个表: sql CREATE TABLE EnglishWords (id INT AUTO_INCREMENT PRIMARY KEY,word VARCHAR(255) NOT NULL,phonetic TEXT NOT NULL,c…

书生·浦语第二期-笔记2

课程链接:https://github.com/InternLM/Tutorial/tree/camp2 视频地址:轻松玩转书生浦语大模型趣味Demo_哔哩哔哩_bilibili 大模型及InternLM介绍 大模型:人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型 特点&#xff1a…

使用json-server来创建mockserver

代替mock模拟数据 1.使用mkdir vue3-ts-server 创建目录 2.npm init -y 生成package.json的依赖配置文件 详见json-server - npm 3.cnpm install json-server -S 4.目录结构是data,public,src{app.js , router.js , db.js &…

【Linux杂货铺】进程通信

目录 🌈 前言🌈 📁 通信概念 📁 通信发展阶段 📁 通信方式 📁 管道(匿名管道) 📂 接口 ​编辑📂 使用fork来共享通道 📂 管道读写规则 &…

初中英语优秀作文分析-002Who stole the cupcake-谁偷了纸杯蛋糕?

更多资源请关注纽扣编程微信公众号 记忆树 1 One Sunday afternoon, Leslie was at home with her kids, 3-year-old Angel, 6-year-old Carl, and 7-year-old Tony. 翻译 一个周日的下午,Leslie和她的孩子们在家,他们是3岁的Angel,6岁的…

镜子摆放忌讳多

镜子是我们日常生活中不可或缺的物品。在风水中,镜子的作用非常多,能够起到一定的作用。镜子的摆放位置也是非常有讲究的,摆放不好会直接影响到家人的事业、财运、婚姻乃至健康等诸多方面。 第一个风水忌讳,镜子对大门。大门的正前…

Linux防火墙之iptables(二)

一.SNAT策略概述 1.SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由) 局域共享上网 2.SNAT 策略的原理 源地址转换,Source Network Address Translation 修改数据包的源地址 未作SNAT转换…

用three.js+echarts给公司写了一个站点数据大屏系统经验总结

时间过的好快,参加公司的新项目研发快一年了,五一机器人项目首秀,我们遇到了高并发集中下单情景,然后海量数据处理场景来了,给我在后端领域的高并发实践业务上画上了漂亮的一笔经验。人都是在磨练中成长,我很感谢这次给我的机会,虽然有点累,但也有点小成就。正好现在有…

时隔一年半。。。

大概一年半的时间没登录,经历了蛮多事情,包括不满,辞职,备考,笔试,面试… 大体上是蛮幸运的,又要去新的单位工作了,第一份事业编的工作做得真的很痛苦,大概是因为丢掉了专…

AGI系列(1):掌握AI大模型提示词优化术,提问准确率飙升秘籍

当我们向AI大模型提问时,通常人们的做法是有什么问题,就直接去问,得到大模型的回复结果,时好时坏,完全没有可控性。 那么有没有一种方式或是一套方法,可以让我们向大模型提问时,得到的结果更准确…

nacos 2.3.3 Windows系统安装详细版

1,下载 https://github.com/alibaba/nacos/releases 2,解压 3,将nacos的内置库(derby),修改为我们自己的 mysql 3.1 创建一个数据库 3.2 连接数据库 3.3 执行mysql 脚本,在nacos的conf 目录下 mysql-schema.sql 执…

Python | R | MATLAB高斯过程统计模型

📜随机统计模型-用例 📜海上风电场模型 | 📜天气和建筑设计模型 | 📜不确定性量化应用模型 | 📜马尔可夫链蒙特卡罗算法多模态采样贝叶斯模型 | 📜分类过程最大似然模型 | 📜C和Python通信引文…

【LeetCode 167】两数之和II

1. 题目 2. 分析 就是简单的双指针的题,使用头尾指针分别指向数组的首尾,然后依次判断两者值的和与target的大小关系。关系分成三类: (1)和大于target,说明尾指针过大,需要前移; &…

深入了解 Golang 多架构编译:交叉编译最佳实践

随着软件开发领域的不断发展,我们面临着越来越多的挑战,其中之一是如何在不同的平台和架构上部署我们的应用程序。Golang(Go)作为一种现代化的编程语言,具有出色的跨平台支持,通过其强大的多架构编译功能&a…

刷代码随想录有感(79):回溯算法——N皇后问题

题干: 代码&#xff1a; class Solution { public:vector<vector<string>> res;void backtracking(vector<string>& chessboard, int n, int row){if(row n){res.push_back(chessboard);return;}for(int col 0; col < n; col){if(isvalid(chessboa…

将3D检测的box框投影到BEV图片上

前言 点云数据作为一种丰富的三维空间信息表达方式&#xff0c;通常用于自动驾驶、机器人导航和三维建模等领域。然而&#xff0c;点云数据的直观性不如二维图像&#xff0c;这限制了它在一些需要快速视觉反馈的应用场景中的使用。本文将探讨如何将点云数据转换为二维图像&…

Python Flask 图片上传与下载

Python代码 #encoding:utf-8 #!/usr/bin/env python from werkzeug.utils import secure_filename from flask import Flask, render_template, jsonify, request, make_response, send_from_directory, abort import osapp Flask(__name__) UPLOAD_FOLDER upload app.confi…

公共代理IP和独享代理IP之间的区别?

公共代理IP和独享代理IP在网络应用中扮演着不同的角色&#xff0c;它们之间的区别主要体现在使用方式、性能、安全性以及隐私保护等方面。以下是对这两种代理IP的详细对比和分析。 第一点就是使用的方式以及成本上的不同&#xff0c;公共代理IP&#xff0c;顾名思义&#xff0…

python基于深度学习的聊天机器人设计

python基于深度学习的聊天机器人设计 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 登录注册功能 用户在没有登录自己的用户名之前只能浏览本网站的首页&#xff0c;想要使用其他功能都…

服务器被黑?快速检测和识别系统中的恶意进程

在管理和维护服务器时,检测和识别系统中的恶意进程是非常重要的。本文将详细介绍几种常用方法和工具,帮助您有效地检测和处理恶意进程,确保系统的安全性。 方法一:使用系统监控工具 1.1. 使用 ps 命令 ps 命令可以列出系统中所有正在运行的进程。使用以下命令查看特定用户…