Skip to main content
  1. Posts/

Enable Brotli Compression

·2 mins·
linux apache nginx linux
Table of Contents

Brotli adalah algoritma kompresi yang dikembangkan oleh Google yang menawarkan banyak manfaat. seperti peningkatan waktu muat situs web dan pengurangan penggunaan bandwidth.

Pada panduan kali ini akan membahas cara mengaktifkan brotli pada server web Apache dan Nginx. Jika memungkinkan Saya akan mengedit kembali panduan ini dengan menambahkan server web lainnya.

Apache
#

Enable the Brotli module

Pastikan modul brotli sudah di load pada server web.

grep -iR brotli /etc/httpd/conf.modules.d/
# grep -iR brotli /etc/httpd/conf.modules.d/
/etc/httpd/conf.modules.d/00-base.conf:LoadModule brotli_module modules/mod_brotli.so

Enable HTTPS

Konfigurasikan SSL pada virtualhost. Anda bisa memakai layanan free SSL seperti ZeroSSL atau Let’s Encrypt.

Configure Brotli Compression

Konfigurasikan brotli agar dapat aktif secara global.

nano /etc/httpd/conf.d/brotli.conf
<IfModule mod_brotli.c>
    AddOutputFilterByType BROTLI_COMPRESS text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript
    BrotliCompressionQuality 4
    SetOutputFilter BROTLI_COMPRESS
</IfModule>

Restart the Apache server

systemctl restart httpd

Test Brotli Compression

Untuk pengetesan brotli bisa melalui website Brotli.Pro atau menggunakan perintah curl seperti berikut.

curl -I -H 'Accept-Encoding: br' https://example.com
$ curl -I -H 'Accept-Encoding: br' http://web1.srv1.de/
HTTP/1.1 200 OK
Date: Sun, 15 Oct 2023 00:43:20 GMT
Server: Apache
X-Powered-By: PHP/7.2.34
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=08i89nrtfbchrr2utqm4lv27tj; path=/
Vary: Accept-Encoding
Content-Encoding: br
Content-Length: 1
Content-Type: text/html; charset=UTF-8

Nginx
#

Untuk langkah - langkahnya tidak jauh beda seperti Apache.

Enable the Brotli module

Download source code nginx sesuai versi yang Anda gunakan.

wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xaf nginx-1.24.0.tar.gz

Clone modul brotli dari repo github.

git clone --recurse-submodules -j8 https://github.com/google/ngx_brotli

Compile modul brotli.

cd nginx-1.24.0
./configure --with-compat --add-dynamic-module=/root/ngx_brotli
make modules

Jika proses compile berhasil, selanjutnya copy file module.

cp objs/ngx_http_brotli_filter_module.so /usr/share/nginx/modules
cp objs/ngx_http_brotli_static_module.so /usr/share/nginx/modules

Load module brotli.

mkdir -p /etc/nginx/modules.conf.d
nano /etc/nginx/modules.conf.d/brotli.conf
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

Edit nginx.conf dengan menambahkan konfigurasi berikut pada awal baris atau sebelum baris events {

include /etc/nginx/modules.conf.d/*.conf;

Enable HTTPS

Konfigurasikan SSL pada virtualhost. Anda bisa memakai layanan free SSL seperti ZeroSSL atau Let’s Encrypt.

Configure Brotli Compression

Konfigurasikan brotli agar dapat aktif secara global.

nano /etc/nginx/conf.d/brotli.conf
brotli on;
brotli_comp_level 4;
brotli_static on;
brotli_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

Restart the Nginx server

systemctl restart nginx

Test Brotli Compression

Untuk pengetesan brotli bisa melalui website Brotli.Pro atau menggunakan perintah curl seperti berikut.

curl -I -H 'Accept-Encoding: br' https://example.com
# curl -I -H 'Accept-Encoding: br' http://example.com
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 15 Oct 2023 10:06:16 GMT
Content-Type: text/html
Connection: keep-alive
Last-Modified: Mon, 18 Sep 2023 10:27:13 GMT
ETag: W/"678-6059f95e4c240"
Content-Encoding: br

Related

Enable SWAP on Linux
·1 min
linux linux
Install Redis di Linux
·1 min
linux php linux
Install Memcached di Linux
·1 min
linux php linux
Install APCu di Linux
·1 min
linux php linux
Access File Share with smbclient
·1 min
linux linux
Configure Scheduling Class and Priority Disk I/O in Linux
·2 mins
linux linux