为Nginx启用Brotli压缩算法的方法示例

Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比。

什么是 Brotli 压缩算法

Brotli最初发布于2015年,用于网络字体的离线压缩。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。

与常见的通用压缩算法不同,Brotli使用一个预定义的120千字节字典。该字典包含超过13000个常用单词、短语和其他子字符串,这些来自一个文本和HTML文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。

使用brotli替换deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。使用Brotli进行流压缩的内容编码类型已被提议使用“br”。

安装

1.下载 brotli

git clone https://github.com/google/ngx_brotli
cd ngx_brotli && git submodule update --init

2.编译

在原有的编译配置后增加 –add-module=/opt/nginx/ngx_brotli

例如

代码如下:

./configure --prefix=/usr/local/nginx --user=www --group=www --with-pcre=/opt/nginx/pcre-8.41 --with-http_ssl_module --with-zlib=/opt/nginx/zlib-1.2.11 --with-openssl=/opt/nginx/openssl-1.0.2n --add-module=/opt/nginx/ngx_brotli --with-http_v2_module

配置,在 http 段加入

http {
  include    mime.types;
  default_type application/octet-stream;
  sendfile    on;
  tcp_nopush   on;

  keepalive_timeout 65;
  #Brotli Compression
  brotli on;
  brotli_comp_level 6;
  brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;
  ……

重启,刷新页面查看 header,发现有

accept-encoding:gzip, deflate, br

如图所示

即表示开启了 brotli 压缩

配置说明

指令介绍

ngx_brotli定义了如下指令:

brotli,是否允许动态压缩响应数据,可选值为on和off,默认值为off。样例如下:

brotli on;

brotli_types,动态压缩启用时,允许压缩的MIME types,默认值为text/html。样例如下:

brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript;

brotli_static,是否允许查找预处理好的、以.br结尾的压缩文件,可选值为on、off和always,默认值为off。样例如下:

brotli_static off;

brotli_comp_level,压缩级别,可选值范围为0~11,默认值为6。样例如下:

brotli_comp_level 11;

brotli_buffers,压缩响应数据时使用的缓冲区的数量和大小。样例如下:

brotli_buffers 16 8k;

brotli_window,brotli使用的窗口值,默认值为512k。样例如下:

brotli_window 512k;

brotli_min_length,响应数据的最小长度,低于该值将不使用brotli算法执行压缩操作。brotli算法使用Content-Length来确定响应数据的长度。样例如下:

brotli_min_length 20;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Nginx服务器之负载均衡策略(6种)

    一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器.详情请查看我的另一篇博客. 二.Nginx负载均衡策略 负载均衡用于从"upstream"模块定义的后端服务器列表中选取一台服务器接受用户的请求.一个最基本的upstream模块是这样的,模块内的server是服务器列表: #动态服务器组 upstream dynamic_zuoyu { server localhost:8

  • 使用Docker Compose 实现nginx负载均衡的方法步骤

    以Docker的网络管理,容器的IP设置为基础知识实现Nginx负载均衡 查看所有docker网络 docker network ls /* NETWORK ID NAME DRIVER SCOPE b832b168ca9a bridge bridge local 373be82d3a6a composetest_default bridge local a360425082c4 host host local 154f600f0e90 none null local */ // compose

  • Nginx 负载均衡算法及故障转移解析

    概述 Nginx负载均衡提供上游服务器(真实业务逻辑访问的服务器),负载均衡.故障转移.失败重试.容错.健康检查等. 当上游服务器(真实业务逻辑访问的服务器)发生故障时,可以转移到其他上游服务器(真实业务逻辑访问的服务器). 配置 upstream backServer{ server 127.0.0.1:8080; server 127.0.0.1:8081; } server { listen 80; server_name www.itmayiedu.com; location / { #

  • springboot+nginx+https+linux实现负载均衡加域名访问简单测试

    1.把springboot项目打包成三个jar包,并指定端口为 14341,14342,14343 2.下载腾讯云免费ssl证书,解压后会出现如下图文件夹 3.把nginx文件夹下的 .crt 和 .key文件复制到服务器,例如复制到 /home/ssl/xxx.crt /home/ssl/xxx.key 4.安装好nginx默认配置文件在 /usr/local/nginx/conf/nginx.conf 5.修改nginx.conf配置文件实现https+负载均衡的简单测试(此测试是在一台服务

  • 如何使用nginx充当mysql的负载均衡器

    说明:nginx版本要求是1.9以上 ,编译nginx的时候需要加上 --with-stream 如: ./configure --prefix=/Data/apps/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-stream 注意 1.因为mysql默认使用了3306端口所以配置nginx t

  • 简单了解Nginx七层负载均衡的几种调度算法

    这篇文章主要介绍了简单了解Nginx七层负载均衡的几种调度算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Nginx是一款轻量级的高性能web服务器,同时也是一款非常优秀的负载均衡器和反向代理服务器.由于支持强大的正则匹配规则.动静分离.URLrewrite功能及安装配置简单且对网络稳定性依赖非常小等优点,所以常用来做为七层负载均衡使用.在硬件不差的情况下,通常可以稳定支持几万的并发连接,在硬件性能足够好,且对系统内核参数及Nginx配置进

  • Nginx启用Brotli算法压缩的示例

    Brotli 是 Google 开发的一种压缩格式,它通过内置分析大量网页得出的字典,实现了更高的压缩比率,同时几乎不影响压缩 / 解压速度. 本站通过 ngx_brotli 模块来让 Nginx 支持 Brotli 压缩方式.本文介绍其配置方式. 安装模块 若要启用 ngx_brotli 模块,需要在编译 Nginx 时,加入相应模块: # get source git clone https://github.com/google/ngx_brotli.git cd ngx_brotli g

  • 深入浅析nginx四种调度算法和进阶

    upstream 支持4种负载均衡调度算法: A)轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器; B)ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器; C)url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器; D)fair:这是比上面两个更加智能的负载均衡算法.此种算法可以依据页面大小和加载时间长短智能地进 行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配.Nginx本身

  • 为Nginx启用Brotli压缩算法的方法示例

    Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比. 什么是 Brotli 压缩算法 Brotli最初发布于2015年,用于网络字体的离线压缩.Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩.其中的编码器被部分改写以提高压缩比,编码器和解码器都提高了速度,流式API已被改进,增加更多压缩质量级别.新版本还展现了跨平台的性能改进,以及减少解码所需的内存. 与常见的通用压缩算法不同,Brotli使用一个预定义

  • Nginx启用gzip压缩的方法示例

    在服务器完成了一些配置以后,还需要做的一件事:启用gzip来压缩返回的数据,从而来加快网站的加载速度. 以下为在Nginx上启用gzip的相关配置(将其添加到配置文件即可): # 开启gzip gzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_length 1k; # gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间. gzip_comp_level 2; # 进行压缩的文件类型. gzip_types text/plain te

  • 解决Nginx端口冲突的排查方法示例

    问题描述 一个Spring + Angular前后端分离的项目,使用Nginx进行数据转发. Nginx监听端口8100,前台端口4200,后台端口8080. 像往常一样,提前配置好MySQL.配置好Redis,引入项目的Nginx配置文件,然后启动前台.后台,成功. 接下来出现了问题:前台发起的请求,只有极少数能被后台接收到,大部分都是404,随着在浏览器中的点击,控制台不断的出现404. 如果只是404,那问题就很简单,很大可能是Nginx端口转发设置错了.但它的神奇之处就在于,还有那么几次

  • nginx实现动静分离的方法示例

    目录 在server1上部署nginx 在server上部署lnmp node3部署httpd 实现分离部署 本文主要介绍了nginx实现动静分离的方法示例,具有一定的学习价值,具体如下 环境: 系统/主机名 IP地址 服务 Redhat8 :server1 192.168.244.131 nginx Redhat8:server2 192.168.244.133 lnmp Content7:node3 192.168.244.142 httpd 在三台主机上关闭防火墙 [root@server

  • Nginx开启Brotli压缩算法实现过程详解

    前言 在web应用中,为了节省流量,降低传输数据大小,提高传输效率,常用的压缩方式一般都是gzip,今天我们来介绍另外一种更高效的压缩方式brotli. Brotli 是基于LZ77算法的一个现代变体.霍夫曼编码和二阶上下文建模.Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩. 注意:使用算法的前提是启用了 https,因为 http 请求中 request header 里的 Accept-Encoding: gzip, defl

  • Nginx 启用 BoringSSL的配置方法

    本文介绍以 BoringSSL 作为 Nginx 加密库的配置方法. BoringSSL 是由谷歌从 Openssl 中抽出来后独立发展的作品,是 Google.Cloudflare 等大牌的御用. BoringSSL 有优点也有缺点:优点是它原生提供 加密算法等价组 (具体我之后会写文章介绍)支持,并且对 tls1.3-draft23 支持较为不错:而缺点是不能在 Nginx 下启用 tls1.3 协议,且 BoringSSL 自身容易编译失败. 本文介绍使用 BoringSSL 替代 Ope

  • Nginx启用proxy_cache缓存的方法

    顾名思义,proxy_cache 是用于 proxy 模式(一般也可称为反代)的缓存功能.本文介绍其基本用法. proxy_cache 在 Nginx 配置的 http 段.server 段(location 段)中分别写入不同的配置.http 段中的配置用于定义 proxy_cache 空间,server 段中的配置用于调用 http 段中的定义,启用对 server 的缓存功能. http 段 直接以本站的配置为例: proxy_cache_path /home/nginx/proxy_ca

  • nginx日志导入elasticsearch的方法示例

    将nginx日志通过filebeat收集后传入logstash,经过logstash处理后写入elasticsearch.filebeat只负责收集工作,logstash完成日志的格式化,数据的替换,拆分 ,以及将日志写入elasticsearch后的索引的创建. 1.配置nginx日志格式 log_format main '$remote_addr $http_x_forwarded_for [$time_local] $server_name $request ' '$status $bod

  • Nginx location匹配规则的方法示例

    1.语法 location [=|~|~*|^~|@] /uri/ { ... } 2.说明 从上面的语法出发,可以了解到 location 可以区分为三个部分,接下来一个一个的研究一下. 1) [=|~|~*|^~|@] = : 表示精确匹配后面的url ~ : 表示正则匹配,但是区分大小写 ~* : 正则匹配,不区分大小写 ^~ : 表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 @ : "@" 定义一个命名的 location,使用在内部定向时,

随机推荐