brotli: NGINX Brotli dynamic modules
Installation
You can install this module in any RHEL-based distribution, including, but not limited to:
- RedHat Enterprise Linux 7, 8, 9
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 and Amazon Linux 2023
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-brotli
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-brotli
Enable the module by adding the following at the top of /etc/nginx/nginx.conf
:
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
This document describes nginx-module-brotli v0.1.4 released on Jul 01 2021.
Brotli is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression.
ngx_brotli is a set of two nginx modules:
- ngx_brotli filter module - used to compress responses on-the-fly,
- ngx_brotli static module - used to serve pre-compressed files.
Status
Both Brotli library and nginx module are under active development.
Configuration directives
brotli_static
- syntax:
brotli_static on|off|always
- default:
off
- context:
http
,server
,location
Enables or disables checking of the existence of pre-compressed files with.br
extension. With the always
value, pre-compressed file is used in all cases,
without checking if the client supports it.
brotli
- syntax:
brotli on|off
- default:
off
- context:
http
,server
,location
,if
Enables or disables on-the-fly compression of responses.
brotli_types
- syntax:
brotli_types <mime_type> [..]
- default:
text/html
- context:
http
,server
,location
Enables on-the-fly compression of responses for the specified MIME types
in addition to text/html
. The special value *
matches any MIME type.
Responses with the text/html
MIME type are always compressed.
brotli_buffers
- syntax:
brotli_buffers <number> <size>
- default:
32 4k|16 8k
- context:
http
,server
,location
Deprecated, ignored.
brotli_comp_level
- syntax:
brotli_comp_level <level>
- default:
6
- context:
http
,server
,location
Sets on-the-fly compression Brotli quality (compression) level
.
Acceptable values are in the range from 0
to 11
.
brotli_window
- syntax:
brotli_window <size>
- default:
512k
- context:
http
,server
,location
Sets Brotli window size
. Acceptable values are 1k
, 2k
, 4k
, 8k
, 16k
,
32k
, 64k
, 128k
, 256k
, 512k
, 1m
, 2m
, 4m
, 8m
and 16m
.
brotli_min_length
- syntax:
brotli_min_length <length>
- default:
20
- context:
http
,server
,location
Sets the minimum length
of a response that will be compressed.
The length is determined only from the Content-Length
response header field.
Variables
$brotli_ratio
Achieved compression ratio, computed as the ratio between the original and compressed response sizes.
Sample configuration
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
GitHub
You may find additional configuration tips and documentation for this module in the GitHub repository for nginx-module-brotli.