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

2024-05-26 13:52

本文主要是介绍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 汇总入门介绍

这篇关于Nginx R31 doc-11-Compression and Decompression 压缩与解压缩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004653

相关文章

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Nginx配置location+rewrite实现隐性域名配置

《Nginx配置location+rewrite实现隐性域名配置》本文主要介绍了Nginx配置location+rewrite实现隐性域名配置,包括基于根目录、条件和反向代理+rewrite配置的隐性... 目录1、配置基于根目录的隐性域名(就是nginx反向代理)2、配置基于条件的隐性域名2.1、基于条件

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

Nginx实现前端灰度发布

《Nginx实现前端灰度发布》灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新,通过灰度发布,我们可以测试新版本的稳定性和性能,下面就来介绍一下前端灰度发布的使用,感... 目录前言一、基于权重的流量分配二、基于 Cookie 的分流三、基于请求头的分流四、基于请求参数的分

一文详解Nginx的强缓存和协商缓存

《一文详解Nginx的强缓存和协商缓存》这篇文章主要为大家详细介绍了Nginx中强缓存和协商缓存的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、强缓存(Strong Cache)1. 定义2. 响应头3. Nginx 配置示例4. 行为5. 适用场景二、协商缓存(协

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co